2016-09-16 4 views
1

Я сделал небольшой компонент в приложении angular2, для которого я использую директиву, чтобы ввести небольшой вид в разных частях приложения. Я определяю только параметры в компоненте, где я использую эту директиву. Эта директива всегда ожидает наличия параметров, и в моем случае требуется время, пока не будет получено данных с сервера, и только тогда будет определено «someOptions». Но этот «примерный» компонент ожидает его сразу, как я могу отложить его? Знаете ли вы, как я могу продолжать использовать это как директиву, но указывать угловые, чтобы активировать его только после того, как параметры определены в компоненте, использующем эту директиву?Загрузка компонента перед директивой в angular2

// the directive Im planning to use in differnt views 
@Component({ 
    selector: 'expml-comp' 
}) 

export class Example1 { 
@Input() options: any; 
    constructor() {} 
    ngOninit(){ 
    //puting data from options to directive 
    } 
} 

//and the component where I want to use this directive: 
@Component({ 
    template: '<expml-comp [options] = 'definedData'></expml-comp>', 
}) 
export class Example2 { 
    constructor() { } 
    private definedData:any; 
//here I need to define the options but before the data comes from server  //the Example1 dir is already activated 
//and it didnt find definedData so it breaks 
ngOnInit(){ 
//this.definedData=... 
} 

} 
+0

Пожалуйста, добавьте код. –

ответ

0

Вы можете использовать ngOnChanges(). Этот метод вызывается, когда значение, связанное с входом, было изменено.

export class Example1 { 
    @Input() options: any; 
    constructor() {} 
    ngOnChanges(changes){ 
    if(this.options != null) { 
     // options are set 
    } 
    } 
} 
Смежные вопросы