使用输入将数据传输到组件

时间:2016-09-20 17:02:06

标签: javascript angular angular2-directives

如何将数据从一个页面转移到另一个页面,但它显示错误我是新的角色

TypeError:无法读取MediaItemComponent中[{{mediaItem.id}}中未定义的属性“id”

如何获取数据

first.html

<section>
    <media-item [mediaItem]="firstMediaItem"></media-item>
</section>

first.ts

import {Component} from 'angular2/core';
import {MediaItemComponent} from './secound';

@Component({
    selector: 'media-tracker-app',
    directives: [MediaItemComponent],
    templateUrl: 'app/app.component.html',
    styleUrls: ['app/app.component.css']
})
export class AppComponent {
    firstMediaItem = {
        id: 1,
        name: "Firebug",
        medium: "Series",
        category: "Science Fiction",
        year: 2010,
        watchedOn: 1294166565384,
        isFavorite: false
    };
}

secound.html

<h2>{{ mediaItem.id }}</h2>
<div>Watched on {{ mediaItem.watchedOn }}</div>
<div>{{ mediaItem.category }}</div>
<div>{{ mediaItem.year }}</div>

secound.ts

import {Component, Input} from 'angular2/core';

@Component({
    selector: 'media-item',
    templateUrl: 'app/media-item.component.html',
    styleUrls: ['app/media-item.component.css']
})
export class MediaItemComponent {
    @Input('mediaItemToWatch') mediaItem;
}

2 个答案:

答案 0 :(得分:2)

first.html

<section>
    <media-item [mediaItemToWatch]="firstMediaItem"></media-item>
</section>

答案 1 :(得分:0)

DOCS说你应该像你一样避免重命名@Input()。这就是这个问题的原因。

要修复组件行为,只需将@Input声明更改为:

secound.ts

import {Component, Input} from 'angular2/core';

@Component({
    selector: 'media-item',
    templateUrl: 'app/media-item.component.html',
    styleUrls: ['app/media-item.component.css']
})
export class MediaItemComponent {
    @Input() mediaItem; //HERE, do not rename the input
}