2016-03-26 27 views
1

Birlikte Yönlendiricimde deactive yöntemini geçersiz çalışıyorum şu:Yönlendirici'de devre dışı yöntemi nasıl geçersiz kılar?

ihracat sınıfı AnimationRouterOutlet RouterOutlet { publicRoutes uzanır: Herhangi; private parentRouter: Yönlendirici; Bazı animasyonlar oluşturabilir, böylece - Gördüğünüz gibi

constructor(_elementRef: ElementRef, _loader: DynamicComponentLoader, 
      _parentRouter: Router, @Attribute('name') nameAttr: string) { 
    super(_elementRef, _loader, _parentRouter, nameAttr); 

    this.parentRouter = _parentRouter; 
} 

deactivate(instruction: ComponentInstruction){ 
    setTimeout(()=>{ 
     console.log("deactivvated state"); 
     return super.deactivate(instruction); 
    },1000); 
} 

activate(instruction: ComponentInstruction) { 
    console.log(instruction); 
    return super.activate(instruction); 
} 

}

, ben web sayfasını değiştirmede gecikme oluşturmak için çalışıyorum.

Ancak bu kullanarak, ben typescript derleyici hata var:

: error TS2415: Class 'AnimationRouterOutlet' incorrectly extends base class 'RouterOutlet'. Types of property 'deactivate' are incompatible. Type '(instruction: ComponentInstruction) => void' is not assignable to type '(nextInstruction: ComponentInstruction) => Promise'. Type 'void' is not assignable to type 'Promise'.

Bunu nasıl düzeltebilirim?

cevap

2

Geçersiz kılma işlevinin dönüş türünü bu şekilde değiştiremezsiniz. Dönüş türünün, süper sınıftaki dönüş türü veya daha özel olanla aynı türde olması gerekir.

CanDeactivate'u uygularsanız, yönlendiricinin bileşenlerden uzaklaşmadan önce beklediği bir söz verebilirsiniz.

+0

Teşekkürler! Gecikme eklemek için orijinal Yönlendiriciyi devre dışı bırakmalı mıyım? – uksz

+0

'routerOnDeactivate()', bileşene eklenecek ve varsayılan olarak yerleşmek için bir söz beklemeyi destekleyecektir. Başka, daha genel yollar olabilir, ama ben henüz o kadar derinlemesine dalmadım. –

+2

'routerCanDeactivate()' burada daha iyi bir seçim olabilir. Görünümü boşaltmadan önce bekler. –

İlgili konular