Ang2でCanActivateガードを使用して変更を保存するように頼んでいます。 私は角RC4を使用していますCanDeactivateガードは、ガードしているコンポーネントの機能へのアクセスがありません
Boot.ts
bootstrap(App, [
...HTTP_PROVIDERS,
StorageService,
PortfolioNavigationGuard,
other...
Routes.ts
export const PortfolioRoutes: RouterConfig = [
{ path: 'portfolios', component: 'PortfolioListComponent' },
{ path: 'portfolios/:id', component: 'PortfolioModelComponent', canDeactivate: [PortfolioNavigationGuard] },
{ path: 'portfolios/:id/:action', component: 'PortfolioModelComponent', canDeactivate: [PortfolioNavigationGuard] }
ガード
@Injectable()
export class PortfolioNavigationGuard implements CanDeactivate<PortfolioDetailComponent> {
constructor(private router: Router) { }
canDeactivate(component: PortfolioDetailComponent) {
component.canDeactivate();
component.anyfunction() --- anyfunction is not a function
return true;
}
エラー
EXCEPTION: Error: Uncaught (in promise): TypeError: component.canDeactivate is not a function
コンポーネント
export class PortfolioDetailComponent {
canDeactivate() {
console.log("WOW");
}
は、なぜ私は私のガード内部のコンポーネント上の任意の関数を呼び出すことはできませんか?
AFAIKコンポーネントは、ガードが「真」に解決した後にのみ作成されます。私は、 'component'ゲッターが解決されたコンポーネントか、' 'でそれを作成するために使われたコンポーネントのタイプだと考えます。 –