我正在从查询参数中提取一些字段,并使用这些字段进行API调用。从服务器接收到数据后,应该显示它,但是什么也没发生(打印语句确认已接收到数据)。
在没有相关查询参数的情况下,我已经在OnInit中使用了此模式,并且可以正常工作,但是这次我一定会想念更多的东西,因为我尝试使用具有硬编码url参数的OnInit而不是OnActivate并获取了同样的结果,除非手动刷新页面,否则组件永远不会使用新数据进行更新。一旦设置了推荐对象,是否有一种方法可以强制组件刷新自身?
class SolutionsComponent implements OnInit, OnActivate {
static final url_path = "http://localhost/api/solutions/";
SolutionsComponent();
Recommendations recommendations = null;
@override
void ngOnInit() {
//Google Analytics stuff in here
}
Future<Recommendations> loadRecommendations(url) {
setRecommendationsFromJson(String response) {
return Recommendations.fromJson(json.decode(response));
}
return HttpRequest.getString(url).then(setRecommendationsFromJson);
}
@override
void onActivate(RouterState previous, RouterState current) {
var id = getId(current.queryParameters);
var recommendation = getSolution(current.queryParameters);
var url = "${url_path}${recommendation}_${id}";
loadRecommendations(url).then((data) {
print("${data}");
recommendations = data;
print("${recommendations}");
});
}
}
答案 0 :(得分:0)
致电ChangeDetectorRef.markForCheck
class SolutionsComponent implements OnInit, OnActivate {
final ChangeDetectorRef _cdRef:
SolutionsComponent(this._cdRef);
void setRecommendationsFromJson(...) {
...
_cdRef.markForCheck();
}
}