Angular Resolver 教程

Photo by Kristine Weilert on Unsplash

声明

本教程是 Angular 路由快速教程的后续章节。假设您已经拥有了一些 Angular 相关的基础路由知识,了解了 Angular 路由模块常见路由组件以及路由匹配的基本方法,尚不清楚的同学建议复习一下路由相关知识

Resolver —— 路由的新机制

在很多时候,我们会在组件初始化的时候(ngOnInit 消息钩子)中预先抓取数据。但是假如数据抓取耗时较长,会导致在组件渲染的时候数据还没拿到渲染的数据(多数情况会在控制台报错)。为了避免这种情况,可以使用 ngIf 指令,让 Angular 在数据加载完成之后对页面进行渲染,也可以用到 Resolver 在路由到组件之前做数据的预抓取。

相比于直接在组件中注入服务,Resolver 可以将数据抓取与其他业务逻辑分离开来,更加利于项目的维护和扩展。这种做法也被称为遵循 “单一职责原则(single responsibility principle )”。

Angular 配置一个 Resolver 也非常简单。只需在路由匹配表中,为某一条路由的 resolve 属性指定一个满足某种格式的服务,就可以轻松实现预抓取。

继续阅读Angular Resolver 教程