如何在RC.1中使用新路由器时扩展路由器插座



在RC.1中使用新路由器时,我似乎无法扩展RouterOutlet。

例:

import { Directive } from '@angular/core';
import { Router, ROUTER_DIRECTIVES, RouterOutlet } from '@angular/router';

@Directive({
  selector: 'router-outlet'
})
export class RouterOutletDirective extends RouterOutlet {
}

错误:

@angular/router/index"' 没有导出的成员 'RouterOutlet'。

我做错了什么还是RC.1中的新路由器坏了?


更新:

import { Directive, Attribute, ViewContainerRef, DynamicComponentLoader } from '@angular/core';
import { Router, Routes, RouterOutletMap } from '@angular/router';
import { RouterOutlet } from '@angular/router/src/directives/router_outlet';

@Directive({
  selector: 'router-outlet'
})
export class RouterOutletDirective extends RouterOutlet {
  constructor(parentOutletMap: RouterOutletMap, _location: ViewContainerRef, name: string) {
    super(parentOutletMap, _location, name);
    console.log( parentOutletMap );
  }

  activate() {
    console.log('Activate');
  }
}

所以它现在正在运行,但 RouterOutlet 以红色下划线标出,类型"any"不是构造函数类型,激活部分也不起作用。我错过了什么吗?

RouterOutletRouterLink 不会从 @angular/router 导出。这最近已经修复,我希望此修复程序包含在 RC.2 中。

您可以从专用路径 ( src/... ) 导入它们作为解决方法,直到发布新版本。

提示

也就是说,新的路由器工作仍在进行中。如果您目前正在从测试版路由器或@angular/router-derprecated迁移到@angular/router,最好推迟到新的新路由器推出。

这是版本 RC 1 的工作代码

import { Directive, Attribute, ViewContainerRef, DynamicComponentLoader } from '@angular/core';
import { Router, Routes, RouterOutletMap } from '@angular/router';
import { RouterOutlet } from '@angular/router/src/directives/router_outlet';
@Directive({
    selector: 'router-outlet'
})
export class LoggedInRouterOutlet extends RouterOutlet {
    constructor(parentOutletMap: RouterOutletMap, _location: ViewContainerRef, name: string){
        super(parentOutletMap, _location, name);
    }
    //activate() {} //EXPIRED
    unload(): void { }
    loadedComponent: Object
    isLoaded: boolean
    load(factory, providers, outletMap: RouterOutletMap): any {
        super.load(factory, providers, outletMap);
        //DO YOUR CHECK HERE
        return this.loadedComponent;
    }
}

最新更新