无法访问模板引用变量
unable to access template ref variables
在 child.ts,我有一个函数 onButtonClicked,它将 revertDisabled 从 true 修改为 false。
存在一个问题,即 parent.html 处的模板引用变量仍然为 revertDisabled 变量获取值 true,即使在用户执行 child.ts 处的函数 onButtonClicked() 后 revertDisabled 值已从从真到假。
我尝试通过在 parent.ts 添加 @input 来解决它,但仍然无法访问 revertDisabled 的更改值。
parent.html
<button type="button" [disabled]="interface.revertDisabled"></button>
<interface-settings #interface></interface-settings>
child.ts (接口-settings.ts)
this.revertDisabled = true;
onButtonClicked() {
this.revertDisabled = false;
}
是的,父级不会以这种方式获取值。通过模板变量,您可以按照此处所述执行子方法:
https://angular.io/guide/component-interaction#parent-interacts-with-child-via-local-variable
但指南也明确表示:
The parent component cannot data bind to the child's start and stop
methods nor to its 'seconds' property.
您可以使用@Output 和此处描述的模式完成您需要的工作:https://angular.io/guide/component-interaction#parent-listens-for-child-event
基本上:
//child.ts (interface-settings.ts)
@Output() revertDisabled = new EventEmitter<boolean>();
onButtonClicked() {
this.revertDisabled.emit(false);
}
然后:
// parent.html
<button #parentButton type="button"></button>
<interface-settings (revertDisabled)="parentButton.disabled=false"></interface-settings>
在 child.ts,我有一个函数 onButtonClicked,它将 revertDisabled 从 true 修改为 false。
存在一个问题,即 parent.html 处的模板引用变量仍然为 revertDisabled 变量获取值 true,即使在用户执行 child.ts 处的函数 onButtonClicked() 后 revertDisabled 值已从从真到假。
我尝试通过在 parent.ts 添加 @input 来解决它,但仍然无法访问 revertDisabled 的更改值。
parent.html
<button type="button" [disabled]="interface.revertDisabled"></button>
<interface-settings #interface></interface-settings>
child.ts (接口-settings.ts)
this.revertDisabled = true;
onButtonClicked() {
this.revertDisabled = false;
}
是的,父级不会以这种方式获取值。通过模板变量,您可以按照此处所述执行子方法: https://angular.io/guide/component-interaction#parent-interacts-with-child-via-local-variable
但指南也明确表示:
The parent component cannot data bind to the child's start and stop methods nor to its 'seconds' property.
您可以使用@Output 和此处描述的模式完成您需要的工作:https://angular.io/guide/component-interaction#parent-listens-for-child-event
基本上:
//child.ts (interface-settings.ts)
@Output() revertDisabled = new EventEmitter<boolean>();
onButtonClicked() {
this.revertDisabled.emit(false);
}
然后:
// parent.html
<button #parentButton type="button"></button>
<interface-settings (revertDisabled)="parentButton.disabled=false"></interface-settings>