2

我在 Angular2 课程中犯了一个错误,我对 @Input 还没有清楚地理解

我创建了 2 个组件 AppComponent 和 AppDetailComponent。

在 AppDetailComponent 中:

import { Component, Input } from '@angular/core';


@Component ({
selector: 'app-detail',
template: 'Hi {{datainput}}'
})

export class AppDetailComponent {

@Input()
datainput: string;

}

并在 AppComponent 模板中:

<h1>
  {{title}}
</h1>
<app-detail [datainput]="'test'"></app-detail>

在 App Module 中我犯了一个错误,将 AppDetailComponent 添加为引导组件

import { AppComponent } from './app.component';
import { AppDetailComponent } from './app-detail.component';

@NgModule({
  declarations: [
    AppComponent, AppDetailComponent
  ],
  imports: [
    BrowserModule,
    FormsModule,
    HttpModule
  ],
  providers: [],
  bootstrap: [AppComponent, AppDetailComponent]
})
export class AppModule { }

从引导列表中删除 AppDetailComponent 后,程序正常工作。

我不明白为什么当我将 @input 用作引导组件时它不起作用?

尽管我从其他角度组件发送输入,Angular 是否总是会忽略输入属性?

4

2 回答 2

1

@Inputs()只能绑定在组件的模板中。自举组件位于index.html任何其他组件之外,因此无法绑定到输入。

另请参阅Angular 2 外部输入

如果您没有匹配的选择器index.html并且不想将组件用作根组件,则不要将其添加到bootstrap: [...]

于 2017-02-23T10:09:20.160 回答
0

您只需要引导 AppComponent。

import { AppComponent } from './app.component';
import { AppDetailComponent } from './app-detail.component';

@NgModule({
  declarations: [AppComponent, AppDetailComponent],
  imports: [
    BrowserModule,
    FormsModule,
    HttpModule
  ],
  bootstrap: [AppComponent]
})
export class AppModule { }
于 2017-02-23T10:41:54.400 回答