小编Ant*_*gov的帖子

错误:商店没有提供商!使用Angular 4.0尝试@ngrx/store时

问题: 错误:商店没有提供商!

我在main.ts中引导商店模块:

platformBrowserDynamic().bootstrapModule(AppModule,[
  provideStore({
    characters, 
    vehicles
  })
]);
Run Code Online (Sandbox Code Playgroud)

并注入vehicle.component.ts:

constructor(
    private _route: ActivatedRoute,
    private _router: Router,
    private _vehicleService: VehicleService,
    private _store: Store<any>
  ) {}
Run Code Online (Sandbox Code Playgroud)

完整的源代码在这里:GitHub,在GitHub Pages上运行的最新版本

PS.将Store添加到提供程序会导致另一个错误:无法解析Store的所有参数:(?,?,?).

ngrx angular ngrx-store

13
推荐指数
3
解决办法
1万
查看次数

Angular 2+ Component 可以很好地扩展 Component,但 tslint 抱怨继承的生命周期钩子

我有一个抽象的基本组件,可以自己清理订阅:

import { OnDestroy, OnInit } from '@angular/core';
import { Subject } from 'rxjs/Subject';

export abstract class NeatComponent implements OnDestroy, OnInit {
// Add '.takeUntil(this.ngUnsubscribe)' before every '.subscrybe(...)'
// and this subscriptions will be cleaned up on component destroy.

  protected ngUnsubscribe: Subject<any> = new Subject();

  public ngOnDestroy() {
    this.ngUnsubscribe.next();
    this.ngUnsubscribe.complete();
  }

  public ngOnInit(){}
}
Run Code Online (Sandbox Code Playgroud)

现在我创建工作组件:

export class CategorySelectorComponent extends NeatComponent {

    public constructor() { super(); }
    
    public ngOnInit() {
      // some code
    }
}
Run Code Online (Sandbox Code Playgroud)

一切正常,但 tsLint 不喜欢我的 ngOnInit 方法:

[tslint] …

tslint angular

5
推荐指数
2
解决办法
1387
查看次数

使用proxyquire和mocha在单元测试中模拟方法调用时如何模拟时间延迟(超时)?

在测试模块 A 中的方法时,我使用 proxyquire 模拟模块 B 的方法(在模块 A 中注入了 require())。模拟(mocking ad.model.js 模块的 get_campaigns 方法):

const admitadModelMock = {
    '../services/admitad.model': {
        get_campaigns: (limit, page) => new Promise((resolve, reject) =>
            setTimeout(resolve({campaigns: testData, count: 1000}), 5000)
        ),
    },
};
Run Code Online (Sandbox Code Playgroud)

考试:

it('shold get all campaigns from Admitad', async function () {
    this.timeout(60000);
    let err, data;
    // mock dependencie (get_campaigns() of module B will be mocked):
    let $serviceStubbed = proxyquire('../services/campaign-sync', admitadModelMock);
    // getAdmitadCampaigns() just calls get_campaigns method of module B
    [err, data] = await to($serviceStubbed.getAdmitadCampaigns(50)); …
Run Code Online (Sandbox Code Playgroud)

mocha.js node.js proxyquire

3
推荐指数
1
解决办法
6733
查看次数

我可以在打字稿中获取泛型类型的元数据吗?

我有一个装饰模型类:

@Api('payments/deposit')
export class DepositsModel {
  public id: number;
  public created_at: Date;
  ...
Run Code Online (Sandbox Code Playgroud)

在角度组件构造函数中,我正在注入指向使用我的模型类的数据服务:

...
public constructor( 
  private $api: GridApiService<DepositsModel>
...
) {
  this.service = new GridService($api);
  ...
}
...
Run Code Online (Sandbox Code Playgroud)

所以,我的酷组件有一个很酷的服务,巫婆知道它使用的数据类型...

应该知道..

但是如何在GridApiService中获取模型的元数据呢?我试过了:

@Injectable()
export class GridApiService<T>{
  constructor(
    $http: HttpClient,
  ) {
    let api = Reflect.getMetadata('Api', T);
  }
Run Code Online (Sandbox Code Playgroud)

并得到 错误消息:'T'仅引用类型,但在此处用作值.

UPDATE

你能否告诉我另一种将初始化数据传递给我的GridApiService的方法,应该通过DI注入,而不是用new关键字创建?

metadata typescript angular

2
推荐指数
1
解决办法
796
查看次数