首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法读取未定义角度2的属性'completed‘

无法读取未定义角度2的属性'completed‘
EN

Stack Overflow用户
提问于 2017-01-05 07:54:32
回答 0查看 576关注 0票数 1

我使用的是@Input(),根据我的理解,这个组件应该能够将<experiment [experiment]="experiment.completed"></experiment>绑定到该组件。下面是层次结构:

experiment.detail.component.ts

代码语言:javascript
复制
import {Component, Input, Output} from '@angular/core';
import {Experiment} from '../../common/experiment.model';
import {ExperimentsService} from "../../common/experiments.service";

@Component({
  selector: 'experiment',
  template: require('./experiment.detail.component.html'),
  styles: [`
    .experiment {
      cursor: pointer;
      outline: 1px lightgray solid;
      padding: 5px;
      margin: 5px;
    }
  `]
})

export class ExperimentDetailComponent {

  experiments: Experiment[];

  constructor(private _experimentsService:ExperimentsService){

  }

  ngOnInit() {
    this.experiments = this._experimentsService.getExperiments();
  }

  @Input() experiment: Experiment;


  doExperiment(): void {
    this.experiment.completed += 1;
  };
}

上面的HTML文件:

代码语言:javascript
复制
<div class="experiment" (click)="doExperiment()">

    <div *ngFor="let experiment of experiments">
        <div *ngIf="experiment">

            {{ experiment.name }}


            <p>
                {{ experiment.description }}
            </p>

            <p>
                <strong>{{experiment.completed}}</strong>
            </p>
        </div>
    </div>
</div>

然而,当我在experiments.component.html上调用它时,我得到了错误:

代码语言:javascript
复制
<h1 class="align-middle">
    {{ title }}
</h1 >
<p class="align-middle">
    {{ body }}
</p>
<hr/>

<experiment [experiment]="experiment.completed"></experiment>

<hr/>
<div>
    <h2 class="table table-striped">Experiments: {{message}}</h2>
    <div class="form-inline">
        <input type="text" [(ngModel)]="message" placeholder="Message">
        <button type="submit" class="btn" (click)="updateMessage(message)">Update Message</button>
    </div>
</div>

错误:

代码语言:javascript
复制
EXCEPTION: Uncaught (in promise): Error: Error in ./ExperimentsComponent class 
ExperimentsComponent - inline template:8:12 caused by: Cannot read property '    
completed' of undefined

NgModule:

代码语言:javascript
复制
import {BrowserModule} from "@angular/platform-browser";
import {NgModule,CUSTOM_ELEMENTS_SCHEMA} from "@angular/core";
import {FormsModule} from "@angular/forms";
import {HttpModule} from "@angular/http";
import {RouterModule} from "@angular/router";
import {HomeComponent} from "./home/home.component";
import {ExperimentsComponent} from "./experiments/experiments.component";
import {AboutComponent} from "./about/about.component";
import {AppComponent} from "./app.component";
import {ExperimentsService} from "./common/experiments.service";
import {StateService} from "./common/state.service";
import {ExperimentDetailComponent} from "./experiments/experiment-details/experiment.detail.component";

    @NgModule({
        declarations: [
            AppComponent,
            AboutComponent,
            HomeComponent,
            ExperimentsComponent,
            ExperimentDetailComponent
        ],
        imports: [
            BrowserModule,
            FormsModule,
            HttpModule,
            RouterModule.forRoot([
                {path: '', redirectTo: '/home', pathMatch: 'full'},
                {path: 'home', component: HomeComponent},
                {path: 'about', component: AboutComponent},
                {path: 'experiments', component: ExperimentsComponent},
                {path: '**', component: HomeComponent}
            ])
        ],
        schemas: [
          CUSTOM_ELEMENTS_SCHEMA
        ],
        providers: [
            ExperimentsService,
            StateService
        ],
        bootstrap: [AppComponent]
    })
    export class AppModule {
    }

Github post Github Post

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41475181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档