【问题标题】:How to check if a component has a property definition programmatically in Angular?如何在 Angular 中以编程方式检查组件是否具有属性定义?
【发布时间】:2019-11-09 11:00:07
【问题描述】:

我在 Angular 中有一个组件的属性,如下所示:

export class CarComponent implements OnInit {
  partNumber: number;

  checkIfItHasAPartNumberProperty() {
      return this.hasAProperty('partNumber');
  }

hasAProperty 检查此类是否包含按字符串名称定义的属性的 Angular 等效项是什么,例如。 “零件号”?

这不是关于获取“partNumber”值的问题,也不是直接检查它是否具有属性“partNumber”的问题,而是以编程方式检查组件是否具有给定名称的属性(通过字符串)。

【问题讨论】:

  • @Jota.Toledo hasOwnProperty 似乎不适用于 Angular 组件属性
  • this post。可以使用hasOwnProperty 检索已初始化的属性,但其他属性在运行时不存在于类实例中。您可以通过console.log(this) 看到这一点。
  • @ConnorsFan 我明白了。那么该怎么做呢?
  • @TomaszSmykowski - One answer 建议使用自定义转换器,但我从未尝试过。

标签: angular


【解决方案1】:
 const obj = this as object;
 obj.hasOwnProperty('prop')

将此转换为对象,您应该可以在其上调用 hasOwnProperty

编辑 这不适用于尚未初始化的属性。对于这种情况(如果可能的话)用 null 初始化属性,上面的代码将起作用

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-16
    • 2019-04-30
    • 2015-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多