2015-11-15 1 views
1

Я смотрю образец для angular2, где конструктор класса ссылается на @Parent(). Я получаю сообщение об ошибке: (58, 18) TS2304: Не удается найти имя «Родитель». Я видел, как другой ответил, что сказал, что использует «Хост», но у меня такая же ошибка. Я использую Alpha.45. Here - ссылка на образец. Полный код в конце.Обновленный синтаксис для @Parent() в Angular2

constructor(@Parent() tabs:Tabs) { 
     tabs.addTab(this); 
     this._active=true ; 
    } 
+0

Что же ошибка вы получаете, когда вы используете '@Host()'? '@ Parent' устарел много альфа назад, и вы должны использовать' @ Host'. Таким образом, была бы полезна точная ошибка и воспроизведение ошибки. –

ответ

2

@Host параметр декоратор просто ограничить разрешения зависимостей с принимающим компонентом. Вам не нужно использовать его для получения ближайшего компонента указанного типа. Однако вам может понадобиться использовать @Inject с forwardRef, если ваша зависимость еще не определена.

Например (см this plunk, я не использую forwardRef там):

import {Component, Input, Inject, forwardRef} from 'angular2/angular2' 

@Component({ 
    selector: 'tab', 
    template: 'Tab {{ index }}' 
}) 
class Tab { 
    @Input() index: number; 

    constructor(@Inject(forwardRef(() => Tabs)) tabs: Tabs) { 
    console.log(tabs); 
    } 
} 

@Component({ 
    selector: 'tabs', 
    template: 'Tabs (<ng-content></ng-content>)' 
}) 
class Tabs {} 

@Component({ 
    selector: 'my-app', 
    directives: [Tabs, Tab], 
    template: ` 
    <tabs> 
     <tab index="1"></tab> 
     <tab index="2"></tab> 
    </tabs> 
    ` 
}) 
export class App {} 
+0

Плункер был очень полезен. Спасибо. – jeff

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