angular - 从服务获取新值不会重新加载 View

标签 angular http service

我在渲染服务获取的数据时遇到问题。这是情况:

我有一项服务正在从使用 Observable 的远程 API 获取值(value):

@Injectable()

export class myService {

constructor(private http: Http) { }

getData(listLength: number): Observable<Data> {
    return this.http.get(`${this.resourceUrl}/${listLength}`)
                .map((res: any) => this.convertResponse(res));
}

从我的服务获取值并将它们存储在名为 data 的 var 中的组件:

@Component({
    selector: 'my-component',
    templateUrl: './my-component.component.html'
})
export class MyComponent implements OnInit{

data: Data[];

constructor(
    private myService: myService,
    private alertService: AlertService 
) {  }

loadData(length: number) {
    this.myService.getData(length).subscribe(
        (res: any) => {
            this.data= res.json();
        },
        (res: any) => this.onError(res.json())
    );
}

ngOnInit(){
    this.loadData(5);
}

private onError (error) {
    this.alertService.error(error.message, null, null);
}
}

以及正在呈现我的数据的 View :

<table class="table table-hover">
  <tr *ngFor="let oneData of data">
     <td>{{oneData.attr1}}</td>
     <td>{{oneData.attr2}}</td>``
  </tr>    
</table>
<button  (click)="loadData(10)">Show more</button>

问题是以下一个:

在第一次渲染时,没有问题,数据加载良好,但是当我点击按钮时没有任何反应。但是,请求被发送到我的远程服务器。我必须再次单击,然后最终重新加载 View 。

有什么想法吗?

最佳答案

您是否尝试过手动触发变更检测?

import { ChangeDetectorRef } from "@angular/core"; //<-- import

constructor(
    private myService: myService,
    private alertService: AlertService,
    private changeDetector: ChangeDetectorRef //<-- inject
) {  }

loadData(length: number) {
    this.myService.getData(length).subscribe(
        (res: any) => {
            this.data= res.json();
            this.changeDetector.detectChanges(); //<-- use
        },
        (res: any) => this.onError(res.json())
    );
}

关于angular - 从服务获取新值不会重新加载 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43409585/

相关文章:

Angular 拦截http错误

http - 通过 URL 发送 POST 请求

angular - 在数据仍在使用 Angular 6 加载时显示表单的策略

c# - 带服务和控制台的 System.Threading.Mutex

android - 远程服务崩溃时 Activity 崩溃

angular - 何时应将 FormControl 标记为原始状态?

css - 如何在 ng2-smart-table 上显示自定义图标?

angular - 如何在Angular的构造函数中使用@Inject文本测试组件

java - 在 java 中发布 XML 请求

docker - 在 daemon.json 中配置主机后无法启动 docker