【问题标题】:Set default value for @Input in case that it's null from departure为 @Input 设置默认值,以防它在离开时为空
【发布时间】:2019-04-05 17:25:17
【问题描述】:

我有一个“属性”,它的值来自一个“对象”。此“对象”在用户登录之前为空,因此“属性”也为空,Angular CLI 不会编译我的应用程序。

错误是:

错误:模板解析错误:无法绑定到“属性”,因为它不是 “组件”的已知属性。

模板:

<my-directive [attribute]="object.array.length"></my-directive>

“我的指令”组件:

@Input() attribute: number;

那么在没有设置对象的情况下,如何通过为我的属性设置默认值来防止此错误。所以我的属性无论如何都会有一个值,我的应用程序将编译而不管对象的值。

【问题讨论】:

  • 当您没有将 Input 正确绑定到其 html 装饰时会导致错误。不是因为价值。换个名字试试,可能attribute是保留键
  • 为简单起见,我更改了名称。实际名称不同且未保留。

标签: angular


【解决方案1】:

在模板中使用条件属性? 运算符。

改为:

<my-directive [someAttribute]="someObject?.array.length"></my-directive>

这将告诉 Angular 仅在 someObject 可用时尝试访问 array 属性。

【讨论】:

  • 您还可以确保您的对象具有此值:@Input() attribute = 0;:如果提供了该值,它将覆盖默认值,即零。
  • @ashish.gd 谢谢兄弟,问题解决了。
【解决方案2】:

您可以像这样设置默认值:

@Input() attribute: number=0;

【讨论】:

  • 谢谢,但 ashish.gd 的答案正是我想要的。
  • 很高兴你找到了答案
【解决方案3】:

你可以这样初始化输入:

@Input() attribute: number | null;

所以,即使object为null,你也可以初始化属性。

【讨论】:

    猜你喜欢
    • 2015-09-02
    • 2020-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多