2017-09-22 6 views
1

私はconstructorngOnInitを読みました。そして私自身は、変数とサービスの初期化をconstructorとし、任意のロジックをngOnInitにするべきだという結論に達しました。そして、これは私にとってはきれいに見えます。ngOnInit()のコンストラクタとロジック/関数の初期化

これは私の実装例です。私はそれを正しくやっている場合や、私はconstructorngOnInitを間違って理解している場合、いくつかのフィードバックを得ることを願っています。または、私はちょうどngOnInitにすべてを置くべきですか?

constructor(
    public loading: LoadingController, 
    public auth: AuthService, 
    public data: DataService 
) { 
    this.existingProfile = new EventEmitter<Profile>(); 
    this.loader = this.loading.create({ 
     content: 'Loading...' 
    }); 
} 

ngOnInit() { 
    this.loader.present(); 
    this.data.getProfile().subscribe(profile => { 
     this.userProfile = profile; 
     this.existingProfile.emit(this.userProfile); 
     this.loader.dismiss(); 
    }); 
} 

答えて

2

私は記事の偉大な細部にThe essential difference between Constructor and ngOnInit in Angularthis answerconstructorngOnInitとの違いを説明してきました。

初期化が@Inputバインディングに依存する場合は、コンストラクタでバインディングを使用できないため、ngOnInitという選択肢は1つしかありません。それが依存していない場合、コンストラクタで初期化を実行するのはまったく問題ありません。あなたは出力を使用している場合、実際には、この:

class O { 
    @Output ev = new EventEmitter(); 

はまだ

class O { 
    constructor() { 
     this.ev = new EventEmitter(); 

にコンパイルされるが、一般的な推奨事項は、初期化のためにngOnInitを使用することです。このようにして、チームの皆さんはngOnInitの内部を見て、このコンポーネントがどのように初期化されているかを理解しています。

だから、ngOnInitに依存しないと少し主観的です。

+1

このような詳細な回答ありがとうございます。 +1 – sebaferreras

+1

@sebaferreras、よろしいですか? –

+0

もちろん、私はあなたの記事に常に従っています: – sebaferreras

関連する問題