小编Ste*_*tal的帖子

Angular 2.0.2:ActivatedRoute在服务中为空

我想使用ActivatedRoute来获取服务中的路由参数,就像我在组件中一样.但是,当我在Service中注入ActivatedRoute对象时,它包含一个空的params变量

我创建了一个再现行为的plunker:http://plnkr.co/edit/sckmDYnpIlZUbqqB3gli

请注意,目的是使用服务中的参数而不是组件,plunker的设置方式纯粹是为了证明问题.

组件(test已检索):

export class Component implements OnInit {
  result: string;

  constructor(private route: ActivatedRoute) {
  }

  ngOnInit() {
    this.route.params.subscribe(params => {
      this.result = params['test'];
    });
  }
}
Run Code Online (Sandbox Code Playgroud)

服务(test检索):

export class Service {
  result: string;

  constructor(private route: ActivatedRoute) {
    this.getData();
  }

  getData() {
    this.route.params.subscribe(params => {
      this.result = params['test'];
    });
  }
}
Run Code Online (Sandbox Code Playgroud)

angular2-routing angular

27
推荐指数
2
解决办法
9530
查看次数

angular 2.0.0-rc.1 + karma:提供路由器

当测试需要一个实例时Router,只提供Router自己是不够的:

import {Router} from '@angular/router';

import {it, inject, beforeEachProviders} from '@angular/core/testing';
import {ComponentToTest} from './component.to.test';

describe('ComponentToTest', () => {
  beforeEachProviders(() => [
    Router,    
    ComponentToTest
  ]);


  it('should call getData() on contruct', inject([Router], (router) => {
    spyOn(ComponentToTest.prototype, 'getData');
    expect(ComponentToTest.prototype.getData).not.toHaveBeenCalled();
    let component = new ComponentToTest(router);
    expect(ComponentToTest.prototype.getData).toHaveBeenCalled();
  }));
});
Run Code Online (Sandbox Code Playgroud)

将发生以下错误:

错误:无法解析"路由器"的所有参数(?,?,?,?,?,?).确保所有参数都使用Inject进行修饰或具有有效的类型注释,并且"Router"使用Injectable进行修饰.

但我真的不知道如何解决路由器.

Router 参数

_rootComponent:Object,

_rootComponentType:Type,

在alpha中我们有RootRouter: import {RootRouter} from 'angular2/src/router/router';.这已经消失,没有任何替代品.

_componentResolver:ComponentResolver,

_urlSerializer:RouterUrlSerializer,

还没有得到如何提供这些的线索.

_routerOutletMap:RouterOutletMap,

似乎这个已经在路由器本身中提供了

_location:位置

此参数可能仍由以下提供SpyLocation:

import {SpyLocation} from '@angular/common/testing';

describe('ComponentToTest', () => …
Run Code Online (Sandbox Code Playgroud)

angular2-routing angular

4
推荐指数
1
解决办法
1014
查看次数

标签 统计

angular ×2

angular2-routing ×2