Router named outlets that are activated once

前端 未结 4 653
孤城傲影
孤城傲影 2021-01-17 18:11

Is it possible to have router named outlets that are activated once and then never destroyed, no matter what route is navigated in primary outlet?

The intention is t

4条回答
  •  青春惊慌失措
    2021-01-17 18:16

    skipLocationChange navigation option works only for a router it was supplied for, then named outlet appears in the url, like /login(foo:bar).

    It's possible to have permanent foo router outlet by overriding UrlSerializer, as was suggested by @kemsky:

    import {
      UrlSerializer, DefaultUrlSerializer, UrlSegmentGroup, UrlTree
    } from '@angular/router';
    
    export class FooUrlSerializer extends DefaultUrlSerializer {
      serialize(tree) {
        const { foo, ...noFooChildren } = tree.root.children;
        const root = new UrlSegmentGroup(tree.root.segments, noFooChildren);
        const noFooTree = Object.assign(new UrlTree(), tree, { root });
    
        return super.serialize(noFooTree);
      }
    }
    
    ...
    providers: [{ provide: UrlSerializer, useClass: FooUrlSerializer }, ...]
    ...
    

提交回复
热议问题