k.v*_*ent 9 angular-services angular
我有两个服务。login.service.ts
和environment-specific.service.ts
。
在login.service.ts
我需要初始化一个 Json 对象,environment-specific.service.ts
从中传递几个链接。
用例是如何在没有 的情况下使其在 servcie 中工作ngOnInit(){}
,因为 ngOnInit()
根据 Angular2 Lifecycle Hook 不能在 servcie 中使用。
在这里你可以找到我必须在里面初始化的部分login.service.ts
- 当然没有ngOnInit()
方法:
...
import { EnvSpecific } from '../models/env-specific';
import { ActivatedRoute } from "@angular/router";
@Injectable()
export class LoginService {
link1: string;
link2: string;
link3: string;
constructor(private http: Http, private fbuilder:FormBuilder, private route: ActivatedRoute) { }
ngOnInit(){
this.route.data
.subscribe((data: { envSpecific: EnvSpecific }) => {
this.link1 = data.envSpecific.link1;
this.link2 = data.envSpecific.link2;
this.link3 = data.envSpecific.link3;
});
}
...
...
}
Run Code Online (Sandbox Code Playgroud)
我想将链接传递给传递给不同http.post
API 调用的 URL 。例如:
...
var obsRequest = this.http.post( this.link1, serializedForm, this.options )
...
Run Code Online (Sandbox Code Playgroud)
错误很明显: link1 is undefined
请问有什么建议或提示吗?
您可以将服务中的逻辑移至ngOnInit
服务的构造函数。但即便如此,该link1
属性也可能不会立即设置,因此您可能需要为其提供默认值。
但这对我来说似乎是一种反模式。您只需使用默认通过 Angular CLI 设置的本机 Angular 2 环境即可。
它具有开发/生产变体,您可以根据需要在其中设置值,然后将其导入到您的服务中。根据您的方式ng build
(如果您-prod
是否传递标志),将使用不同的环境变量。
归档时间: |
|
查看次数: |
12492 次 |
最近记录: |