【问题标题】:unable to access template ref variables无法访问模板引用变量
【发布时间】:2020-08-07 21:51:01
【问题描述】:

在 child.ts,我有一个函数 onButtonClicked,它将 revertDisabled 从 true 修改为 false。

有一个问题,即 parent.html 中的模板引用变量的 revertDisabled 变量的值仍然为 true,即使用户在 child.ts 处执行了函数 onButtonClicked() 已将 revertDisabled 值从 true 更改为 false。

我尝试通过在 parent.ts 中添加 @input 来解决它,但仍然无法访问 revertDisabled 的更改值。

parent.html

<button type="button" [disabled]="interface.revertDisabled"></button>
<interface-settings #interface></interface-settings>

child.ts (interface-settings.ts)

this.revertDisabled = true;

onButtonClicked() {
  this.revertDisabled = false;
}

【问题讨论】:

    标签: angular angular6 angular7 parent-child angular-input


    【解决方案1】:

    是的,父母不会以这种方式获取价值。通过模板变量,您可以执行子方法,如下所述: https://angular.io/guide/component-interaction#parent-interacts-with-child-via-local-variable

    但指南也明确表示:

    父组件不能数据绑定到子组件的启停 方法也不是它的“秒”属性。

    您可以使用@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>
    

    【讨论】:

    • 谢谢!顺便说一句,想知道您是否知道这一点,我还有另一个问题stackoverflow.com/questions/63309569/…
    • 似乎您链接了同样的问题?对不起,我很困惑
    • 为您解答了这个问题。如果这里有帮助 - 请接受答案,其他答案也一样。干杯!
    • 我会尝试其他问题的建议。我已经接受了这个问题的答案。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2012-05-04
    • 1970-01-01
    • 2017-01-30
    • 1970-01-01
    • 2017-08-29
    • 1970-01-01
    • 2022-12-05
    • 1970-01-01
    相关资源
    最近更新 更多