Javascript 角度文字在重新打开时消失
在我的代码中,我正在显示一个段落,我希望用户更改该段落并保存它。因此,该段是更新和新的。显示文本的组件是主页的侧面板。代码可以工作,用户可以编辑数据,保存后,您可以在网络中看到数据的更新。但是当我重新打开页面时,旧文本又回来了,就好像我没有对它做任何修改一样,即使它已经改变了。我的代码在下面,我搜索了一下,但是我不能找出问题所在,我应该怎么做才能解决它 HTML:Javascript 角度文字在重新打开时消失,javascript,html,angular,typescript,Javascript,Html,Angular,Typescript,在我的代码中,我正在显示一个段落,我希望用户更改该段落并保存它。因此,该段是更新和新的。显示文本的组件是主页的侧面板。代码可以工作,用户可以编辑数据,保存后,您可以在网络中看到数据的更新。但是当我重新打开页面时,旧文本又回来了,就好像我没有对它做任何修改一样,即使它已经改变了。我的代码在下面,我搜索了一下,但是我不能找出问题所在,我应该怎么做才能解决它 HTML: 标签信息: {{{u stickerData?.stickerData}} 更新贴纸 TS: private\u标签数据:数
标签信息:
{{{u stickerData?.stickerData}}
更新贴纸
TS:
private\u标签数据:数据;
@输入()
设置标签数据(prm:prm数据){
如果(此数据!=prm){
这一点。_stickdata=prm;
}
}
获取标签数据():标签数据{
返回此数据。\u粘贴数据;
}
数据源:MatTableDataSource;
建造师(
私人生产服务:生产服务,
私人cd:ChangeDetectorRef,
) {}
恩戈尼尼特(){
}
onStickerDataChange(数据){
这是。_stickerData.stickerData=数据;
}
保存(){
this.confirmDialogRef=this.\u dialog.open(FuseConfirmDialogComponent{
disableClose:false,
});
此.confirmDialogRef.componentInstance.confirmMessage=
“标签将被更改。”;
此.confirmDialogRef.afterClosed().subscribe((结果)=>{
如果(结果){
这是生产服务
.saveStickData(此.\u StickData)
.订阅((响应:数据)=>{
这。_stickdata=响应;
这是。_messages.Show(
“贴纸已更新”,
3.
);
这个.cd.markForCheck();
});
}
});
}
TS服务:
saveStickerData(data: IStickerData): Observable<IStickerData> {
return this._http.post("Production/SaveStickerData", data);
}
saveSticketData(数据:数据):可观察{
返回此信息。_http.post(“生产/保存标签数据”,数据);
}
您需要从保存数据的位置获取数据
通过为数据添加get函数来更新服务文件。类似于
production.service.ts
getStickData():可观察{
返回此.httpClient.get(“生产/获取数据”)
}
然后调用应用程序组件中的函数:
app.component.ts
ngOnInit(){
this.productionService.getStickerData()中
.subscribe(data=>this.\u stickerData.stickerData=data)
}
这应该用生产中保存和更新的数据填充段落…您从API验证,您从API中获取更新数据或刷新后的旧数据?是的,我获取更新数据我的服务中有一个GetStickerDataList,所以我在ngOnInit中这样调用它
this.\u productionService.getstackerdatalist(this.Filter).subscribe((响应:any)=>this.\u stackerdata.stackerdata=response)
但它给出了一个类型错误:当我打开页面时,无法设置未定义的属性“stackerdata”
错误\u stackerdata
似乎有一个私有访问修饰符。我假设这会阻止在加载页面时在DOM中读取它。。。因此,请尝试删除我使其公开的属性的任何访问修饰符(即使其公开)。然而,我仍然得到同样的错误。我不知道问题出在哪里。这是我犯的错误的一部分<代码>错误类型错误:无法在SafeSubscriber上设置未定义的属性“StickData”。\u在SafeSubscriber上设置下一步(sticker preview.component.ts:54)。\u在SafeSubscriber.next(Subscriber.js:122)上设置下一步(Subscriber.js:183)
private _stickerData: IStickerData;
@Input()
set StickerData(prm: IStickerData) {
if (this._stickerData != prm) {
this._stickerData = prm;
}
}
get StickerData(): IStickerData {
return this._stickerData;
}
dataSource: MatTableDataSource<IStickerData>;
constructor(
private _productionService: ProductionService,
private cd: ChangeDetectorRef,
) {}
ngOnInit() {
}
onStickerDataChange(data) {
this._stickerData.StickerData = data;
}
save(){
this.confirmDialogRef = this._dialog.open(FuseConfirmDialogComponent, {
disableClose: false,
});
this.confirmDialogRef.componentInstance.confirmMessage =
"Sticker will be changed.";
this.confirmDialogRef.afterClosed().subscribe((result) => {
if (result) {
this._productionService
.saveStickerData(this._stickerData)
.subscribe((response: IStickerData) => {
this._stickerData = response;
this._messages.Show(
"Sticker is updated",
3
);
this.cd.markForCheck();
});
}
});
}
saveStickerData(data: IStickerData): Observable<IStickerData> {
return this._http.post("Production/SaveStickerData", data);
}