私はangle2を使用している簡単なCRUDアプリケーションに取り組んでいます。私は製品のリストを表示するProductListComponent
を持っており、さらにこのコンポーネントには2つの子コンポーネントProductDetailComponent
とProductUpdateComponent
があります。アンギュラー2のコンポーネント間でビューが更新されない
ProductUpdateComponent
は、モーダルを開き、フォームを送信します。投稿が成功した後、ProductListComponent
にナビゲートします。私はProductListComponent
に移動してるときに成功し、更新した後、ビューは
ProductListComponent
@Component({
selector: 'product-list',
moduleId: module.id,
templateUrl: 'product-list.component.html',
directives: [ProductDetailComponent, ProductUpdateComponent],
providers: [ProductService]
})
export class ProductListComponent {
public products: any;
constructor(private productService: ProductService) {
this.productService.getAllProducts()
.subscribe(
response => this.products = response.products
);
}
}
ProductUpdateComponent
(製品リストが更新されていない)新しいデータで更新されていませんComponent({
selector: 'product-form',
moduleId: module.id,
templateUrl: 'product-form.component.html',
providers: [CheckFormErrors, ProductService]
})
export class ProductFormComponent {
productForm: ControlGroup;
formFields: Array<string>;
view: string;
@Input()
pr: Product;
// form stuff goes here
// after form submitted
saveProduct() {
if (this.productForm.dirty && this.productForm.valid) {
let form = this.productForm.value
let formProduct = new Product({
code: form.code,
name: form.name,
price: form.price,
packing: form.packing,
description: form.description
});
this.productService.updateProduct(this.pr, formProduct)
// navigate to ProductList
this.router.navigate(['/']);
console.log("competed")
}
}
彼は完全なコードをここに詳細: https://bitbucket.org/asifpy/inventory-manager/src
ProductServiceが複数の 'providers'配列に存在するため、ProductServiceの2つのインスタンスを作成しています。 ProductServiceを、コンポーネントツリーの上位にある1つの 'providers'配列に入れてみてください。 ProductListComponentとProductFormComponentは、同じ/単一のProductServiceのインスタンスを取得します。 –
ProductServiceをProductListComponentから削除しました。ProductListComponentは製品サービスを持っていますが、stuck no luck – Asif
productServiceはproductUpdateとproductListConponetの親にのみ追加してください。 –