gpt4 book ai didi

dependency-injection - Angular2 Beta 依赖注入(inject)

转载 作者:太空狗 更新时间:2023-10-29 18:06:23 25 4
gpt4 key购买 nike

我有一个加载 QApi 服务的 NavBar 组件,QApi 服务加载了 UserService,但我收到以下错误:

EXCEPTION: No provider for UserService! (NavBarComponent -> QApi -> UserService)

要么我根本不明白依赖注入(inject)的概念,我犯了一个愚蠢的错误,要么与 native 开发相比这只是一种复杂的方式...感谢您的帮助。

这是我的代码:

用户服务:

import {Injectable} from 'angular2/core';
//import {User} from '../data-source-mocks/users';

@Injectable()
export class UserService {
public isAuthenticated = true;
}

QApi 服务:

import {Injectable} from 'angular2/core';
import {UserService} from '../user/user.service';

@Injectable()
export class QApi {

constructor(private _userService: UserService) {}

}

导航栏组件:

import {Component} from 'angular2/core';
import {QApi} from '../../services/q-api/q-api';

@Component({
selector: 'nav-bar',
template: `Test NavBar`,
providers: [QApi]
})

export class NavBarComponent {
private _isAuthenticated = false;

constructor(private _QApi: QApi) {}
}

编辑:

首先:感谢所有出色的回答,每一个都帮助我更好地理解依赖注入(inject),尤其是这篇文章:https://angular.io/docs/ts/latest/guide/hierarchical-dependency-injection.html

我将我的 QApi 类更改为:

import {Injectable, Inject, Injector} from 'angular2/core';
import {UserService} from '../user/user.service';
import {CardService} from '../card/card.service';

@Injectable()
export class QApi {

constructor() {
var _injector = Injector.resolveAndCreate([UserService,
CardService]);

this.userService = _injector.get(UserService);
this.cardService = _injector.get(CardService);
}

}

现在它像我希望的那样工作了。非常感谢你们!

最佳答案

UserService添加到组件providers:

@Component({
selector: 'nav-bar',
template: `Test NavBar`,
providers: [QApi, UserService] // <- add UserService here
})
export class NavBarComponent { /* ... */ }

这里有两篇很好的文章,可以更好地理解 Angular2 依赖注入(inject):

关于dependency-injection - Angular2 Beta 依赖注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34548347/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com