Ich habe zwei Komponenten 'ItemComponent' und 'ItemForm', und ich muss ein Objekt von einem 'ItemForm' aus einem http-Aufruf von ItemComponent abgerufen.Übergabe des Objekts vom Server von der übergeordneten Komponente an die untergeordnete Komponente angular2
Die ItemComponent
@Component({
selector: 'item',
templateUrl: 'templates/item.html',
directives: [ItemForm]
})
export class ItemComponent implements OnInit {
private routeParams: RouteParams;
item: Item;
title: String;
constructor(
private _service: ItemService,
routeParams: RouteParams) {
this.routeParams = routeParams;
}
fetch() {
this._service.get(this.routeParams.get('id')).subscribe(item => {
this.item = item
},
error => {
console.log(error);
});
}
ngOnInit() {
if(this.routeParams.get('id')) {
this.title = "Update Item";
this.fetch();
}
else {
this.title = "Add Item"
}
}
}
und die ItemForm
@Component({
selector: 'item-form',
templateUrl: `<form #itemForm="ngForm" (ngSubmit)="onSubmit(itemForm)">
<input type="text [(ngModel)]="item.title">
</form>`
})
export class ItemFormComponent implements OnInit {
@Input() item: Item;
private mode: String;
private service: ItemService;
constructor(service: ItemService, routeParams: RouteParams) {
this.service = service;
this.routeParams = routeParams;
if(this.routeParams.get('id')) {
this.mode = "edit";
}
else {
this.mode = "create";
}
}
onSubmit($form) {
console.info("Mode", this.mode);
if ($form.form.valid) {
}
}
ngOnInit() {
console.log(this.item);
}
}
Die Objektposition in der ItemFormComponent nicht definiert ist, obwohl es an der Komponente vorbei
<item-form [item]='item'></item-form>
Ich weiß etwas tue falsch, ich weiß nicht was.
Sie verwenden ein Service ... warum willst du eine Eingabe() verwenden? Du machst die doppelte Arbeit –
@EricMartinez also muss ich keinen Ajax-Aufruf in der ItemForm-Komponente machen – MrFoh