Mengapa tidak ngOnInit()
dipanggil ketika Injectable
kelas diselesaikan?
Kode
import {Injectable, OnInit} from 'angular2/core';
import { RestApiService, RestRequest } from './rest-api.service';
@Injectable()
export class MovieDbService implements OnInit {
constructor(private _movieDbRest: RestApiService){
window.console.log('FROM constructor()');
}
ngOnInit() {
window.console.log('FROM ngOnInit()');
}
}
Output Konsol
FROM constructor()
javascript
angular
typescript
Levi Fuller
sumber
sumber
ngOnInit
logika saya ke konstruktor untukInjectable
kelas? Saya baru ingat membaca bahwa Anda harus menjaga logika dari konstruktor untuk alasan apa pun.providers
array. Jika Anda menginginkan layanan tunggal, letakkan di modul utama Andaproviders
, dan jika Anda ingin layanan per-komponen, tambahkan langsung ke komponen tersebut.ngOnDestroy
dipanggil untuk layanan yang disuntikkanSaya tidak tahu tentang semua kait siklus hidup, tetapi untuk penghancuran,
ngOnDestroy
benar-benar dipanggil pada Injectable ketika penyedianya dihancurkan (misalnya Injectable yang disediakan oleh komponen).Dari
docs :
Kalau-kalau ada orang yang tertarik pada perusakan, periksa pertanyaan ini :
sumber
ngOnInit
itu tidak disebut :-( Saya benar-benar ingin melakukan beberapa sihir inisialisasi tertunda transparan. JikangOnDestroy
bisa disebut saya tidak melihat mengapa init tidak bisaCatatan: jawaban ini hanya berlaku untuk komponen dan arahan Angular, BUKAN layanan.
Saya memiliki masalah yang sama ketika
ngOnInit
(dan kait siklus hidup lainnya) tidak menembakkan komponen saya, dan sebagian besar pencarian membawa saya ke sini.Masalahnya adalah saya menggunakan sintaks fungsi panah (
=>
) seperti ini:Tampaknya itu tidak berfungsi di Angular 6. Menggunakan sintaks fungsi non-panah memperbaiki masalah:
sumber
ngOnInit
.Saya harus memanggil fungsi begitu layanan data saya diinisialisasi, sebagai gantinya, saya menyebutnya di dalam konstruktor, yang berfungsi untuk saya.
sumber
sumber