• 允许在进入路由之前先获取数据,待数据获取完成之后再进入路由
    • ng g resolver ```typescript // get-name.resolver.ts import { Injectable } from ‘@angular/core’; import { Router, Resolve, RouterStateSnapshot, ActivatedRouteSnapshot } from ‘@angular/router’; import { Observable, of } from ‘rxjs’;

    @Injectable({ providedIn: ‘root’ })

    // Resolve 改成了 Resolve export class GetNameResolver implements Resolve { // Observable 换成 Promise resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise { return new Promise((resolve, reject) => { setTimeout(() => { resolve(“张三”) }, 2000) }) } }

    1. ```typescript
    2. // home.component.ts
    3. import { Component, OnInit } from '@angular/core';
    4. import { ActivatedRoute } from '@angular/router';
    5. @Component({
    6. selector: 'app-views',
    7. templateUrl: './views.component.html',
    8. styleUrls: ['./views.component.scss']
    9. })
    10. export class ViewsComponent implements OnInit {
    11. constructor(private route: ActivatedRoute) { }
    12. ngOnInit(): void {
    13. console.log(this.route.snapshot.data.name)
    14. }
    15. }
    1. // app-routing.module.ts
    2. {
    3. path: "views",
    4. component: ViewsComponent,
    5. resolve: {
    6. name: GetNameResolver
    7. }
    8. },