将组件变量作为参数传递或将其指定为全局变量

时间:2016-10-05 16:08:43

标签: angular ionic2 global-variables

我正在重构我的Angular2 / Ionic2代码,想知道我的情况的最佳做法是什么。

我在我的组件中定义了一个变量(this.questions),需要在我的服务方法中使用它。我可以通过两种方式找到解决此问题的方法。

  1. 我使用全局变量服务,在那里分配this.questions然后访问foo.service中的变量

  2. 或者只是将my.questions组件变量作为参数传递给我的方法。

  3. 从理论上讲,两种方式都应该有效,但普遍的共识是什么?

    下面的第2个示例代码: 我有一个组件

    @Component({
      selector: 'text-answers',
      templateUrl: 'text-answers.component.html'
    })
    export class TextAnswersComponent implements OnInit {
    
      questions: Object;
    
      constructor(public fs: FooService) {
        this.questions = {1:"foo", 2:"Bar"};
        this.fs.doPrint(this.questions)
      }
    

    在我的foo.service.ts中:

    doPrint(foo){
        console.log(foo)
      };
    

1 个答案:

答案 0 :(得分:1)

更好的方法是,

服务 中声明问题对象我在这里假设你也想在其他组件中使用问题对象

<强> service.ts

questions:Object;

doPrint(){
    console.log(this.questions)
};

<强> AppComponent.ts

export class TextAnswersComponent implements OnInit {
  constructor(public fs: FooService) {
    fs.questions = {1:"foo", 2:"Bar"};
    this.fs.doPrint();
}