问题描述
当我从服务中获取数据时,Angular 也会进入“第一”位置。但是,没有点击页面上的任何按钮,它并没有进入我写“秒”的地方。
GetAllVessels(){
alert('first');
this.AllVessels=this.http.get<Vessel[]>(this.baseUrl+'Vessel/GetAllVessels',httpOptions).pipe(
map((result: Vessel[]) => {
console.log(result);
alert('second');
return result;
})
);
解决方法
- 订阅由
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script> <table class="table"> <thead> <tr> <th>ID</th> <th>Course Code</th> <th>Course Title</th> <th>Course Campus</th> </tr> </thead> <tbody data-bind="foreach: gpCourseProp"> <tr class="table-dark"> <td></td> <td><span data-bind="text: gpCode"></span></td> <td><span></span></td> <td></td> </tr> <!-- ko foreach: courses --> <tr data-bind="css: { mutated: $parent.hide() == true }"> <td><span data-bind="text: id"></span></td> <td><span data-bind="text: courseCode"></span></td> <td><span data-bind="text: courseTitle"></span></td> <td><span data-bind="text: coursecampus"></span></td> </tr> <!-- /ko --> </tbody> </table>
在其上调用http.get()
返回的 observable - 将响应分配给
.subscribe()
方法内的this.AllVessels
- 除非您真的打算存储订阅引用,否则不要存储
.subscribe()
的返回值
试试这个 -
http.get()
实际上可以清理到这个 -
GetAllVessels() {
alert('first');
this.http.get<Vessel[]>(this.baseUrl + 'Vessel/GetAllVessels',httpOptions)
.pipe(
map((result: Vessel[]) => {
console.log(result);
alert('second');
return result;
}))
.subscribe(
p => this.AllVessels = p,e => console.log(e)
);
}