无法绑定到'mdDatepicker',因为它不是'input'的已知属性

时间:2017-09-04 08:36:10

标签: angular angular-material2

我正在尝试使用Angular Material设计,但我一直遇到这个错误

Can't bind to 'mdDatepicker' since it isn't a known property of 'input'.

我正在关注this documentation安装MD。

我已将以下内容导入app.module.ts

/* Material Design */
import { MdDatepickerModule, MdNativeDateModule } from "@angular/material";

并将其添加到@NgModule

@NgModule({
    imports:
    [
        ...
        BrowserModule,
        BrowserAnimationsModule,
        HttpModule,
        /* Material Design */
        MdDatepickerModule,
        MdNativeDateModule,
    ],

在我的组件模板中,我只是复制粘贴了示例的代码

<md-form-field>
    <input mdInput [mdDatepicker]="picker" placeholder="Choose a date">
    <md-datepicker-toggle mdSuffix [for]="picker"></md-datepicker-toggle>
    <md-datepicker #picker></md-datepicker>
</md-form-field>

我在component.ts文件中没有做任何特别的事情

import { Component, Input, Output, EventEmitter } from "@angular/core";
import { TranslationPipe } from "../../../pipes";

@Component({
    selector: "date-picker",
    templateUrl: "./date-picker.component.html",
    styleUrls: ["./date-picker.component.scss"],
})
export class DatePickerComponent {

    @Input()
    date;

    constructor(
        private translationPipe: TranslationPipe,
    ) {

    }
}

我被困在这里,我找不到任何解决方案。我发现的唯一解决方案是Can't bind to 'mdDatepicker' since it isn't a known property of 'input' - Angular,但正如您所看到的,我实施了它并且它对我没有帮助。

我猜我正在看某事,或者我错过了一步?

提前致谢

2 个答案:

答案 0 :(得分:3)

指令需要列在使用它们的模块的imports: [...]中。

@NgModule({
    imports:
    [
      MdDatepickerModule,
      MdNativeDateModule, 
    ]
}
export class SharedModule {

AppModule中导入它们只会使directives: [...] AppModule中列出的组件中可用,但不在其他地方。

答案 1 :(得分:0)

使用新版本的angular4 datepicker,语法更改为以下代码:

启动DatePicker模块:

<mat-input-container>
  <input matInput [matDatepicker]="picker" placeholder="Choose A Date:"><br/><br/>
  <mat-datepicker-toggle mdSuffix [for]="picker"></mat-datepicker-toggle>
</mat-input-container>
<mat-datepicker #picker></mat-datepicker>

这对我有用,并且能够在UI中看到输出。