如何解决如何实现事件发射器而不是刷新页面?
在我的网站项目中有一个组件称为authorize-Product。就像标题中所说的那样,它是必须在产品中显示在商店组件之前对其进行授权的组件。我已经使用“接受”或“拒绝”按钮实现了包含这些项目的列表。一切正常,但是每次按下这两个按钮之一后,我必须刷新页面,因此不再显示该项目。我听说EventEmitters是比每次刷新页面更好的方法,但是我不知道如何实现它。有人可以帮忙吗?
这是我的authorize.ts文件:
--declaration
import { Component,OnInit } from '@angular/core';
import {HttpClient} from "@angular/common/http";
import {environment} from "../../environments/environment";
import { Product } from '../models/product.model';
@Component({
selector: 'app-product-authorization',templateUrl: './product-authorization.component.html',styleUrls: ['./product-authorization.component.css']
})
export class ProductAuthorizationComponent implements OnInit {
isAdmin: boolean;
products: Product[];
displayedColumns: string[] = ['title','location','delivarable','description','price','acceptorreject'];
constructor(private httpClient: HttpClient) { }
ngOnInit(): void {
this.getProducts()
}
getProducts(){
return this.httpClient.get(environment.endpointURL + 'products/authorized/no').subscribe((res: any) =>
{
console.log(res);
this.products = res;
})
}
authorizeProduct(product: Product){
product.authorized = "yes"
product.status = "available"
return this.httpClient.put(environment.endpointURL + 'products/' + product.productId,product ).subscribe((res: any) =>
{
console.log("Update:");
console.log(res);
//refresh page to update table
this.refresh()
})
}
rejectProduct(productId: number){
return this.httpClient.delete(environment.endpointURL + 'products/' + productId).subscribe((res: any) =>
{
console.log("Delete:");
//refresh page to update table
this.refresh()
})
}
refresh(): void {
window.location.reload();
}
}
解决方法
您将要使用@output
装饰器。这是相关的docs。
基本上,您将创建一个看起来像这样的属性:
// remember to import Output and EventEmitter from @angular/core
@Output() authorize = new EventEmitter();
// To emit the event update your authorizeProduct method
authorizeProduct(product: Product){
product.authorized = "yes"
product.status = "available"
return this.httpClient.put(environment.endpointURL + 'products/' + product.productId,product ).subscribe((res: any) => {
console.log("Update:");
console.log(res);
//refresh page to update table
this.authorize.emit()
})
}
然后在您的父组件中,您可以观看这样的事件
<app-product-authorization (authorize)="someFunctionInYourComponent()"></app-product-authorization>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。