我有一个角度应用程序,其中有一个弹出组件。我可以通过它的父级以及它本身来控制弹出窗口的可见性。
应用程序组件.ts
import { Component } from '@angular/core';
@Component({
selector: 'my-app',
template: `
<popup [visible]="visible"></popup>
<button (click)="onShow()">Show</button>
<button (click)="onHide()">Hide</button>
`,
styleUrls: [ './app.component.css' ]
})
export class AppComponent {
public visible: boolean = false;
public onShow(): void {
this.visible = true;
}
public onHide(): void {
this.visible = false;
}
}
Run Code Online (Sandbox Code Playgroud)
弹出组件.ts
import { Component, Input } from '@angular/core';
@Component({
selector: 'popup',
template: `<div *ngIf="visible">My fancy popup <button (click)="onClick()">Click to close</button></div>`,
})
export class PopupComponent {
@Input()
public visible: boolean;
public onClick(): void {
this.visible = false;
}
}
Run Code Online (Sandbox Code Playgroud)
工作堆栈闪电战。
使用案例:
问题:
据我所知,是因为visible里面的成员app.component.ts没有改变,所以 的PopupComponent值@Input()也没有改变。知道如何解决这个问题吗?
您应该将更改从子级发送到父级:
export class PopupComponent {
@Input()
public visible: boolean;
@Output() visibleChange: EventEmitter<boolean> = new EventEmitter<boolean>();
public onClick(): void {
this.visible = false;
this.visibleChange.emit(this.visible);
}
}
Run Code Online (Sandbox Code Playgroud)
家长:
@Component({
selector: 'my-app',
template: `
<popup [(visible)]="visible"></popup>
<button (click)="onShow()">Show</button>
<button (click)="onHide()">Hide</button>
`,
styleUrls: [ './app.component.css' ]
})
export class AppComponent {
public visible: boolean = false;
public onShow(): void {
this.visible = true;
}
public onHide(): void {
this.visible = false;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4795 次 |
| 最近记录: |