wag*_*Man 9 javascript typescript angular2-services angular
我使用index.ts文件封装出口,如角度2样式指南(https://github.com/mgechev/angular2-style-guide/blob/master/old/README.md#directory-structure)中所述.
这在我写的应用程序中运行良好,但由于某种原因,在一个服务中,我试图注入另一个服务,这会导致一个奇怪的错误.
导出的类:
import {Injectable} from "angular2/core";
@Injectable()
export class UserIds{
private _signature_id:string;
private _role_id:number;
get signature_id():string{
return this._signature_id;
}
set signature_id(id:string){
this._signature_id = id;
}
get role_id():number{
return this._role_id;
}
set role_id(id:number){
this._role_id = id;
}
}
Run Code Online (Sandbox Code Playgroud)
index.ts文件:
export {Midiate} from "./midiate.service/midiate.service";
export {HttpRest} from "./http_rest.service/http_rest.service";
export {UserIds} from "./user_ids.service/user_ids.service"
Run Code Online (Sandbox Code Playgroud)
导致错误的代码(导入文件):
import {UserIds} from "../index";
import {Http} from 'angular2/http';
@Injectable()
export class HttpRest{
constructor(
public _http: Http,
public userIdsx: UserIds
){}
...
}
Run Code Online (Sandbox Code Playgroud)
浏览器抛出的错误:
EXCEPTION: Cannot resolve all parameters for 'HttpRest'(Http, undefined). Make sure that all the parameters are decorated with Inject or have valid type annotations and that 'HttpRest' is decorated with Injectable.
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,UserIds类在构造函数的参数中是未定义的.
将UserIds导入更改为源文件修复了问题:
import {UserIds} from "../user_ids.service/user_ids.service";
Run Code Online (Sandbox Code Playgroud)
我仍然希望使用index.ts作为我的应用程序中的所有其他服务和组件来保持旧样式,并且也理解为什么会发生这种情况.
在 Minko Gechev 的风格指南中,他通过名称引用该文件。我也遇到了这个问题,只是将我的外观文件移到一个文件夹中,然后按名称引用该文件。我还重命名了该文件夹以避免与外观文件发生名称冲突,因为路径中没有文件扩展名,因此路径变得混乱
我遇到了这个问题,询问如何在文件夹中创建一个 index.ts 文件,他们遇到了与您相同的问题。
从
| shared
| services
| login.service.ts
| blog.service.ts
Run Code Online (Sandbox Code Playgroud)
到
| shared
| _services
| login.service.ts
| blog.service.ts
| services.ts
Run Code Online (Sandbox Code Playgroud)
其中services.ts包含
| shared
| services
| login.service.ts
| blog.service.ts
Run Code Online (Sandbox Code Playgroud)
然后我通过以下导入引用我的服务
| shared
| _services
| login.service.ts
| blog.service.ts
| services.ts
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1699 次 |
| 最近记录: |