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

时间:2016-06-05 19:14:04

标签: angular angular2-routing angular2-directives

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

示例:

FOR v,e,p IN 1..50 INBOUND '(id of starting node a,b,etc.)' child 
  FILTER LENGTH(EDGES(child,v._id,'inbound'))==0 RETURN p.vertices

错误:

  

@角/路由器/索引"'没有导出的成员' RouterOutlet'。

我做错了什么或者是否在RC.1中使用新路由器?

更新

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


@Directive({
  selector: 'router-outlet'
})

export class RouterOutletDirective extends RouterOutlet {

}

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

2 个答案:

答案 0 :(得分:4)

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

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

<强>提示

也就是说,还有一个新的路由器正在进行中。如果您目前正在尝试从测试版路由器或@angular/router-derprecated迁移到@angular/router,那么推迟到新的新路由器推出之前可能会更好。

答案 1 :(得分:3)

以下是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;
    }
}