打字稿:无法绑定到两者之间,因为它不是已知属性

时间:2017-11-20 09:01:09

标签: angular typescript

我偶然发现了一个问题,即我的组件中的属性无法识别。 这是我的组成部分:

import { PrecisionDate } from '../../domain/precision-date';
import { Component, Input } from '@angular/core';
import { FormControl } from '@angular/forms';

import { DatePrecisionType } from '../../domain/date-precision.type';
import { ValueRange } from '../../domain/value-range';

@Component({
  selector: 'date-control',
  templateUrl: './date-control.component.html',
  styleUrls: ['./date-control.component.css'],
})
export class DateControlComponent {
  @Input() precision: DatePrecisionType;
  @Input() dateRange: ValueRange<Date>;
  @Input() formControlToUse: FormControl;

  constructor() {}

  get between(): ValueRange<PrecisionDate> {
    return {
      min: this.dateRange ? new PrecisionDate(this.dateRange.min) : null,
      max: this.dateRange ? new PrecisionDate(this.dateRange.max) : null,
    }
  }
}

这就是抛出的错误:

Uncaught Error: Template parse errors:
Can't bind to 'between' since it isn't a known property of 'date-input'.
1. If 'date-input' is an Angular component and it has 'between' input, then verify that it is part of this module.
2. If 'date-input' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message.
3. To allow any property add 'NO_ERRORS_SCHEMA' to the '@NgModule.schemas' of this component. ("<date-input [ERROR ->][between]="between" [precision]="precision" [formControl]="formControlToUse" > </date-input> "): ng:///UiControlsLibraryModule/DateControlComponent.html@0:15

我知道只有es5支持getter和setter。但是,es5被定义为我的tsconfig.json中的目标。

非常感谢任何帮助:)

1 个答案:

答案 0 :(得分:3)

错误来自您的html模板。您似乎正在尝试使用未在组件中定义的@Input

在您的date-input组件中,您需要在html中添加@Input() between或删除[between]="..."

编辑。另外,请检查date-input是否为某个组件,或者date-controldate-input混淆了错误:)。

编辑2.看看你的第三个错误点。

3. To allow any property add 'NO_ERRORS_SCHEMA' to the '@NgModule.schemas' of this component. ("<date-input [ERROR ->][between]="between" [precision]="precision" [formControl]="formControlToUse" > </date-input> "): ng:///UiControlsLibraryModule/DateControlComponent.html@0:15

滚动一下,有一个指针(寻找此符号[ERROR ->]),其中发生错误,这是我喜欢棱角分明的原因之一,他们可以指出错误的原因(大多数情况下是当然):)。

编辑3.我忘了丢失的@Input可以是@Directive输入的一部分,而不仅仅是组件:)。