d'application angulaire 4.ngOnInit ne fonctionne pas sur le composant page d'erreur
Je suis en train de faire une page d'erreur afin de montrer des informations sur l'exception non gérée qui peut se produire. Les GlobalErrorHandler
intercepte les erreurs éventuelles et redirige l'utilisateur vers une page composée d'un seul ErrorComponent
. Lorsque l'erreur se produit, la page est affichée, mais les accroches du cycle de vie ne sont pas appelées.
ErrorHandler:
@Injectable()
export class GlobalErrorHandler extends ErrorHandler {
constructor(
private injector: Injector
) {
// The true paramter tells Angular to rethrow exceptions, so operations like 'bootstrap' will result in an error
// when an error happens. If we do not rethrow, bootstrap will always succeed.
super(true);
}
handleError(error: any) {
const router = this.injector.get(Router);
if (!router.url.startsWith('/error')) {
router.navigate(['/error']);
}
super.handleError(error);
}
}
ErrorComponent:
@Component({
selector: 'error-desc',
template: '<h1>Error page = {{code}}</h1>'
changeDetection: ChangeDetectionStrategy.OnPush
})
export class ErrorComponent implements OnInit {
public code: string = '';
constructor(
) {}
ngOnInit() {
// not called
this.code="AAAA";
console.log("OnInit");
}
ngOnDestroy() {
console.log("OnDestroy");
}
}
travail démo sur plunkr.
Comment puis-je résoudre ce problème? Peut-être que quelqu'un sait solution de contournement? Merci
mis Votre code s'il vous plaît –
Le code est en planker. Voir le lien dans la description – Albert
@Albert Je rencontre le même problème après la mise à niveau de 4.1 à 4.4. BTW Vous devez inclure le code dans votre question, pas un site Web externe, voir [Comment poser une bonne question] (https://stackoverflow.com/help/how-to-ask): "* S'il est possible de créer un exemple vivant du problème que vous pouvez créer un lien vers (par exemple, sur http://sqlfiddle.com/ ou http://jsbin.com/), puis le faire -. mais aussi inclure le code dans votre question elle-même pas tout le monde peuvent accéder à des sites externes, et les liens peuvent se briser au fil du temps. * » – n00dl3