ルーティング機能を使用して角2のアプリケーションを作成しています。上位のルートの1つでレンダリングされたポップアップコンポーネントがあります。より深いルートの1つによってレンダリングされるコンポーネント内のクリックイベント。角2:別のコンポーネントから既存のコンポーネントを呼び出す
@Component({
selector: 'popup-component',
template: '<div [class.show]="isVisible">This is a popup.</div>'
})
export class PopupComponent {
public isVisible: boolean = false;
show() {
this.isVisible = true;
}
}
私はこれを呼び出すことができます方法:オープン方法で
@Component({
selector: 'application',
template: '<router-outlet></router-outlet><popup-component></popup-component>',
directives: [PopupComponent]
})
@RouteConfig([
{ ... },
{ ... }
])
export class AppRoute { }
とシンプルなポップアップ・コンポーネント:たとえば
、のは、私がポップアップを含むテンプレートとベースのルータを持っているとしましょうルーティングツリーのどこかにある別のコンポーネントからAppRouteによって既にレンダリングされた特定のPopupComponentのメソッドを表示しますか?
私はこのような依存性の注入を使用して試してみました:
@Component({
selector: 'my-component',
template: '<button (click)="showPopup()"></button>'
})
export class MyComponent {
constructor(private popup: PopupComponent) { }
showPopup() {
this.popup.show();
}
}
しかし、これはただ実際にはまだ表示されませんPopupComponentの新しいインスタンスを作成します。 AppRouteによってレンダリングされたものをどのように呼び出すことができますか?
@viewchildで行うことはできませんか? – Avij