全局变量加载问题/ Angular 8

时间:2019-11-12 06:50:40

标签: angular

在首次访问组件时未设置全局变量

我有一项服务来设置全局变量。该服务被添加到模块的提供者,也被注入到组件。通过单击按钮即可访问组件。首次访问时,未设置全局值,因为在ngOnInit()之后调用了服务。因此,我使用构造函数来设置值...在两种情况下,行为都是相同的。

将捕获控制台消息: enter image description here

    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来进行打印

enter image description here

服务:

  @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;
}

2 个答案:

答案 0 :(得分:0)

您正在使用+来控制对象,将其替换为,只是简单地它将打印对象。

祝你生日快乐...:)

console.log('initialized-->' ,this.nvGlobals.caseFormNVs)
console.log("Accessed from component 1 -->",this.nvGlobals.caseFormNVs);

答案 1 :(得分:0)

这是stackblitz链接StackBlitz Link

对于全局变量,您可以采用两种方法。

  1. 在index.html

    <body>
         <my-app>loading</my-app>
             <script>
               myTest = 1;
             </script>
    </body>
    

    ,您可以在任何组件.ts文件中访问它。

     declare const myTest: any;
    
     ngOnInit(){
           console.log(myTest);
     }
    
  2. 使用全局服务依赖项注入。

    您的service.ts

     export class GlobalService {
         globalVar: string = 'Global Var';
         constructor() { }
     }
    

    访问app.component.ts。

     constructor(private nGlobal: GlobalService){}
     ngOnInit(){
        console.log(this.nGlobal.globalVar);
     }