【问题标题】:Set 2 way binding property to Host Element Angular 4将 2 路绑定属性设置为 Host Element Angular 4
【发布时间】:2017-10-19 23:34:52
【问题描述】:

有没有办法将 2 路绑定 [(somemodel)] 属性动态添加到 Angular 4 中的 Host 元素?

<my-comp></mycomp>

我们想把上面的标记替换成看起来像

<my-comp [(somemodel)]="modelvalue" ></mycomp> 

在运行时动态。我们知道@HostBinding 不支持这一点,因为我们看到的最常见的例子是向主机添加类或属性。 有没有办法使用 Angular 4 替换这样的主机元素? 如果有人能指出我们正确的方向,我们愿意动态加载模板/组件。

在 Angular 1 中,我们使用文本替换宿主元素标记并执行 $compile(scope)。 Angular 4 中是否有类似的方法使用动态加载?

【问题讨论】:

    标签: angularjs angular


    【解决方案1】:

    我认为您正在寻找的是 Angular 4 中的 @Input。它允许您在组件上定义一个变量并从 HTML 接收它的值。这里是Angular Docs on Input/Output

    还有一个简单的例子

    在您的组件中,从 Angular Core 导入“输入”

    import { Input } from '@angular/core';
    

    然后,定义您的输入变量。在这里,我是一个布尔值的加载变量。

    @Input() loading:boolean = false;
    

    然后,在您的 HTML 中定义绑定。

    <loader [loading]="loading"></loader>
    

    请记住,括号内的“加载”将与输入变量的名称匹配。

    【讨论】:

    • 唯一的问题我需要在主机元素上设置这个属性。而且我认为我不能使用@HostBinding 在主机元素上设置双向绑定属性 [(someattr)]。
    • @user636525 主机元素是什么意思?
    • James:我已经编辑了这个问题,希望现在更清楚了。
    • 感谢您的编辑。不幸的是,我仍然不确定您要查找的内容,也不确定主机元素的含义。这可能只是我的误解:)
    猜你喜欢
    • 2017-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多