için kullanılabilir giriş verisi var nesnesi Input
veri olarak bir dizi alan bir bileşen var.Açısal: Hangi yaşam döngüsü kancası Bileşen
export class ImageGalleryComponent {
@Input() images: Image[];
selectedImage: Image;
}
bileşen selectedImage
değeri images
dizinin ilk nesneye ayarlanmış olması yükler zaman istiyoruz. Böyle OnInit
yaşam döngüsü kanca bunu çalıştık:
export class ImageGalleryComponent implements OnInit {
@Input() images: Image[];
selectedImage: Image;
ngOnInit() {
this.selectedImage = this.images[0];
}
}
bu bana bu sahnede ayarlanmamış images
değer anlamına gelir bir hata Cannot read property '0' of undefined
verir. Ayrıca OnChanges
kancasını da denedim ama takılıyorum çünkü bir dizinin değişikliklerini gözlemleme hakkında bilgi alamıyorum. Beklenen sonucu nasıl elde edebilirim?
ebeveyn bileşeni aşağıdaki gibi görünür:
@Component({
selector: 'profile-detail',
templateUrl: '...',
styleUrls: [...],
directives: [ImageGalleryComponent]
})
export class ProfileDetailComponent implements OnInit {
profile: Profile;
errorMessage: string;
images: Image[];
constructor(private profileService: ProfileService, private routeParams: RouteParams){}
ngOnInit() {
this.getProfile();
}
getProfile() {
let profileId = this.routeParams.get('id');
this.profileService.getProfile(profileId).subscribe(
profile => {
this.profile = profile;
this.images = profile.images;
for (var album of profile.albums) {
this.images = this.images.concat(album.images);
}
}, error => this.errorMessage = <any>error
);
}
}
ebeveyn bileşenin şablon ngOnInit()
çağrılmadan önce bu
...
<image-gallery [images]="images"></image-gallery>
...
"Resimler" verileri ana bileşende nasıl bulunur? Yani, bir http isteği (ler) ile mi? Eğer öyleyse, http gözlemlenebilir için ImageGalleryComponent subscribe() sahip olmaktan daha iyi olabilir. –
@MarkRajcok 'images', ebeveyn tarafından bu gibi kullanılan verilerin bir parçasıdır. {Profile: {firstName:" abc ", lastName:" xyz ", images: [...]}}' Çocuğa abone oluyorum, hala ebeveyn için abone olmalıyım ve yinelemekten kaçınmak istiyorum –
Çocuk bileşeni oluşturulduğunda ana bileşendeki resim dizisi doldurulursa, resim giriş özelliği doldurulmalıdır. ngOnInit() den önce çağrılır. Herkesin size yardımcı olması için (ya da sorunu gösteren minimum bir Plunker oluşturması) resim dizisinin ana bileşende nasıl bulunduğu hakkında daha fazla bilgi vermeniz gerekir. –