在首次访问组件时未设置全局变量
我有一项服务来设置全局变量。该服务被添加到模块的提供者,也被注入到组件。通过单击按钮即可访问组件。首次访问时,未设置全局值,因为在ngOnInit()之后调用了服务。因此,我使用构造函数来设置值...在两种情况下,行为都是相同的。
export class NewreporterComponent implements OnInit {
newReporterform: FormGroup;
fNameGroup : FormGroup;
fg: any;
notSubmitted : boolean;
reporterNVList: nvsForReporter;
caseFormNVs:nvsForCase
constructor( private location: Location, private formBuilder: FormBuilder,
_nvmasterService:NvmasterlistService, private nvGlobals : Globals)
{ this.caseFormNVs = this.nvGlobals.caseFormNVs;
}
ngOnInit() {
console.log('initialized-->' +this.nvGlobals.caseFormNVs)
console.log("Accessed from component 1 -->"+this.nvGlobals.caseFormNVs);
this.notSubmitted = false;
}
}
在此方面,任何帮助都将得到高度评价。顺便说一句,我可以在初始化模块时一次一次加载值,以便模块中的不同视图可以只使用这些值吗? 谢谢ASJ。
更新:完美打印了来自全局服务的字符串变量。上面的代码已经包含var和console msg来进行打印
服务:
@Injectable()
export class Globals {
constructor( public _nvMasterService:NvmasterlistService){ }
public caseFormNVs = this.getCaseNVs();
anyVariable: string = 'test';
public getCaseNVs(): nvsForCase {
this._nvMasterService.getCaseFormNVs().subscribe(
res => {
this.caseFormNVs = res;
console.log('case form values ready')
}
);
return this.caseFormNVs;
}
答案 0 :(得分:0)
您正在使用+
来控制对象,将其替换为,
只是简单地它将打印对象。
祝你生日快乐...:)
console.log('initialized-->' ,this.nvGlobals.caseFormNVs)
console.log("Accessed from component 1 -->",this.nvGlobals.caseFormNVs);
答案 1 :(得分:0)
这是stackblitz链接StackBlitz Link
对于全局变量,您可以采用两种方法。
在index.html
<body>
<my-app>loading</my-app>
<script>
myTest = 1;
</script>
</body>
,您可以在任何组件.ts文件中访问它。
declare const myTest: any;
ngOnInit(){
console.log(myTest);
}
使用全局服务依赖项注入。
您的service.ts
export class GlobalService {
globalVar: string = 'Global Var';
constructor() { }
}
访问app.component.ts。
constructor(private nGlobal: GlobalService){}
ngOnInit(){
console.log(this.nGlobal.globalVar);
}