Angular 4:从对象调用正则表达式模式

时间:2017-08-04 22:20:15

标签: angular typescript angular-cli

我遇到了代码正在运行的问题,但是我得到了一个我无法弄清楚的Tslint错误。使用Angular 1时此设置有效,但现在我使用angular-cli将应用程序转换为4。

  

Angular:未定义标识符'vin'。对象不包含此类   会员。

我已共享存储在下面显示的对象中的正则表达式模式。它会导入到我的组件中,然后使用[pattern]="patterns.KEY"调用。

该模式就像应该的那样工作并且验证工作正常但是当我将它附加到任何输入时,我仍然遇到上述错误。是因为我在patterns上缺少数据类型吗?如果是这样,它将如何定义?

错误仅在模板文件上引发。组件和Patterns文件没有任何验证错误。

模板代码:

<div class="form-group">
    <label for="vin">VIN</label>
    <input type="text" class="form-control" id="vin" placeholder="VIN"
           minlength="8" maxlength="17" required [pattern]="patterns.vin"
           [(ngModel)]="model.Vin" name="Vin" #Vin="ngModel">
  </div>

组件代码:

export class COMPONENT_NAME implements OnInit {
  patterns = Patterns;
}

模式文件:

export const Patterns: Object = {
  vin: /^[\w\d]+$/i,
};

1 个答案:

答案 0 :(得分:1)

原来答案非常简单。需要定义patterns,但需要在ngOnInit()内设置值:

export class COMPONENT_NAME implements OnInit {
  patterns;
  ngOnInit() {
    this.patterns = Patterns;
  }
}

这消除了我看到的Tslint问题。