【发布时间】:2021-02-02 05:17:31
【问题描述】:
我最近将我的应用程序从 angular 7 升级到了 angular 11。 一切正常,然后我实现了 angular Universal 以启用服务器端渲染。
在实现服务器端渲染后,我收到很多错误提示“无法更改对象 [Object Object] 的只读 'xyz' 成员”
所有这些成员都来自我通过@input()从父组件到子组件的对象
我的问题
- 操作作为输入传递的对象是否错误
- 为什么 Angular 通用(服务器端渲染)会中断而不是客户端渲染
这是一个这样的组件
export class BannerComponent {
@Input() banners : Offer[]
constructor(private analyticService : AnalyticService) { }
ngOnChanges() {
if(this.banners) {
this.banners.forEach(banner => {
if(!banner.bannerImage.startsWith("http"))
banner.bannerImage = environment.imageHost + banner.bannerImage;
})
}
}
recordEvent(banner : Offer) {
this.analyticService.eventEmitter(banner.category.name, "Click on banner", banner.offerDetail + "-" + banner.merchant.name, AnalyticService.AVG_AFFILIATE_CLICK_VALUE);
}
}
这是我的报价课程
import { Store } from "./store";
import { Category } from "./category";
export class Offer {
id: number;
merchant: Store;
offerDetail: string;
link: string;
openExternal: boolean;
logoPath: string;
lastDate: Date;
banner: boolean;
bannerImage: string;
category : Category;
offerDescription?: string;
}
Store 和 Category 是另外两个模型
【问题讨论】:
-
你能运行
ng build --aot --prod吗? -
你能给出
Offer类的定义吗? -
@OwenKelvin 会在今天晚上通知您
-
@David 查看编辑
-
模板中的banners属性是Observable提供的吗?
标签: angular typescript angular-universal