निर्माण समय पर @Input
मान अभी तक सेट नहीं है। वास्तव में घटक का निर्माण करने से पहले Angular2 @Input
मान कैसे सेट कर सकता है?
आपको घटक को प्रारंभ करने की प्रतीक्षा करनी है; जिसका अर्थ है कि सभी @Input
मान सेट किए गए हैं। आप OnInit
इंटरफ़ेस को कार्यान्वित करके ऐसा कर सकते हैं।
तो अपने उदाहरण ठीक करने के लिए:
<log-user [user]="user"></log-user>
(नोट: user
, एक परिभाषित वस्तु होना चाहिए अन्यथा इस उदाहरण अपरिभाषित अभी भी लॉग इन करना होगा में आप log-user
HTML टैग करने के लिए *ngIf="user"
जोड़ने सुनिश्चित करने के लिए कर सकते हैं। टैग से पहले user
वास्तव में मौजूद गाया नहीं प्राप्त करता है)
है:।
import {Component, Input, OnInit} from 'angular2/core';
@Component({
selector: 'log-user',
template: `This works: {{user}}`
})
export class LogUserComponent implements OnInit {
@Input() user:any;
ngOnInit() {
// this now gets logged as 'user'
console.log(this.user);
}
}
आप, साथ ही इंटरफ़ेस को लागू करने के बिना अपने घटक पर ngOnInit
विधि बना सकते हैं, लेकिन OnInit
इंटरफ़ेस आपको टाइपप्रति संकलक द्वारा सुनिश्चित कर रहे हैं आयात करके एक टाइपो गलती नहीं बनाते हैं।
Angular docs about OnInit कहता है:
के बाद अपने निर्देश के डेटा-बाउंड गुण कस्टम आरंभीकरण तर्क निष्पादित करने के लिए इस इंटरफेस को लागू करें प्रारंभ की है।
ngOnInit कहा जाता है सही होने के बाद यह निर्देश के डेटा-बाउंड गुण पहली बार के लिए जाँच की गई है, और अपने बच्चों में से किसी से पहले जाँच की गई है। यह केवल एक बार लागू होता है जब निर्देश तत्काल होता है।
स्रोत
2016-01-02 16:58:39
धन्यवाद आपके समय के लिए है, लेकिन मैं पहले से ही करने की कोशिश की है कि, और यह अभी भी रूप में अपरिभाषित लॉग? –
इसके अलावा, किसी ऑब्जेक्ट को पास करने के बजाय, मैंने केवल एक स्ट्रिंग पास करने का प्रयास किया: ' '। यह घटक के अंदर काम करता है और लॉग हो जाता है। तो क्या मैंने कोशिश की जिस तरह से किसी ऑब्जेक्ट में गुज़रने से कुछ गड़बड़ है? @Lodewijk –
इसके साथ कुछ भी गलत नहीं है। नियंत्रक तत्काल होने से पहले यह अस्तित्व में होना चाहिए। –