2016-04-19 3 views
0

У меня есть компонент списка воспроизведения в качестве дочернего компонента Компонент, родительский проход во входном «плейлисте», который является объектом массива.Как получить входные данные, переданные из родительского компонента в Angular2

playList: { 
    headerPlaylists: Array<any>, 
    bodyPlaylists: Array<any> 
    } = { 
    headerPlaylists: [], 
    bodyPlaylists: [] 
    } 

Компонент Ребенок, как показано ниже

@Component({ 
    selector: 'playlist', 
    styleUrls: ['app/channel/playlist/playlist.css'], 
    templateUrl: 'app/channel/playlist/playlist.html', 
    directives: [VideoItemComponent], 
    inputs: ['playlist'] 
}) 

Мой вопрос, в моем классе, как я могу получить доступ к входам передается из его родителя компонент, скажем, просто console.log (список воспроизведения), Есть ли способ сделать это?

export class PlaylistComponent { 

    constructor() { 

    } 
} 

ответ

2

Thierry правильно w.r.t. доступность входов на протяжении всего жизненного цикла, но как это работает, гораздо яснее, если вы используете @Input() в поле, а не inputs в метаданных.

@Component({ 
    selector: 'playlist', 
    styleUrls: ['app/channel/playlist/playlist.css'], 
    templateUrl: 'app/channel/playlist/playlist.html', 
    directives: [VideoItemComponent], 
// inputs: ['playlist'] // would be redundant 
}) 
class PlaylistComponent implements OnInit { 
    @Input() playlist: YourPlaylistType; // i.e. the data structure you posted 

    ngOnInit(){ 
    // use this.playlist 
    } 
} 

Следует отметить, что, в основном, по этой причине, с указанием входов с помощью @Input() является предпочтительным по сравнению с использованием входов в соответствии с ng2 style guide.

1

Свойство playlist будет доступно в рамках методы ngOnInit крюка компонента:

export class PlaylistComponent { 
    playlist: any; // or a specify type instead of any 

    constructor() { 
    console.log(this.playlist); // is null 
    } 

    ngOnInit() { 
    console.log(this.playlist); // is set 
    } 
} 

В конструкторе, свойство еще не установлено.

Для получения более подробной информации, обратитесь к этой странице о жизненном цикле крючках:

+1

Вы все равно должны иметь свойство «playlist» в классе или это не будет компилироваться – drewmoore

+0

Вы правы. Я был сосредоточен на отображении свойства, поэтому я забыл объявление свойства. Я обновил свой ответ. Благодаря! –

Смежные вопросы