Angularjs 错误类型错误:无法读取属性';详情';未定义的
我在本地服务器上有一个纯文本,我想用angular显示在我的网页上。我有我的模型、服务和组件。 所以我在这一行得到一个错误>Angularjs 错误类型错误:无法读取属性';详情';未定义的,angularjs,typescript,Angularjs,Typescript,我在本地服务器上有一个纯文本,我想用angular显示在我的网页上。我有我的模型、服务和组件。 所以我在这一行得到一个错误>this.parations=this.announcement.details.split(“#”) 我试过用?运算符(this.parations=this.announcement?.details.split(“#”),但它无法生成 模型 服务 getAnnouncementById(id) { return this.http.get<Announc
this.parations=this.announcement.details.split(“#”)代码>
我试过用?运算符(this.parations=this.announcement?.details.split(“#”)
,但它无法生成
模型
服务
getAnnouncementById(id)
{
return this.http.get<Announcements>('http://localhost:49674/api/Announcements/' + id)
.pipe(catchError(this.errorHandler));
}
组件-.html
<div class="article column full">
<div *ngFor=" let paragraph of paragraphs">
<p>{{paragraph.details}}</p>
</div>
</div>
{{段落.细节}
this.parations=this.announcement.details.split(“#”)
在this.announcement=data之前调用,因此this.announcement在那一刻未定义
为了确保这两个值已经来自可观察值,您可以使用combinelateest
函数或switchMap
操作符
添加?
运算符是一种解决方法。你的可观察到的仍然可以调用意外的命令
e、 g:
this.route.paramMap.pipe(switchMap((params:paramMap)=>{
让id=parseInt(params.get('id');
this.announcementId=id;
this.getannentbyid(id);
返回此.announcementservice.getAnnouncementById(id)
})).订阅((数据)=>{
this.announcement=数据
this.parations=this.announcement.details.split(“#”);
});
在这种情况下,代码订阅将在第一个observable发出值后开始。将angularjs重新标记到angularI中会出现错误:类型“observable”上不存在属性“switchMap”。我已经导入:
import{switchMap}来自'rxjs/operators'代码>当然,我的坏消息我忘了.pipe(
我更新了答案,请现在检查
import { Announcements } from '../models/Announcement';
export class ReadMoreComponent implements OnInit
{
public announcementId;
public announcement : Announcements
public paragraphs = [];
constructor(
private route: ActivatedRoute,
private router:Router,
private announcementservice: AnnouncementsService
){}
ngOnInit()
{
this.route.paramMap.subscribe((params:ParamMap) => {
let id = parseInt(params.get('id'));
this.announcementId = id;
this.getAnnouncenentById(id)
//split
this.paragraphs = this.announcement.details.split('#');
})
}
getAnnouncenentById(id){
this.announcementservice.getAnnouncementById(id)
.subscribe(data => this.announcement = data);
}
<div class="article column full">
<div *ngFor=" let paragraph of paragraphs">
<p>{{paragraph.details}}</p>
</div>
</div>