我是爱奥尼亚的新手,角度和字体。我在所有页面中都需要一个变量“ar:ar”,所以我认为最好将其设置为全局变量。我是这样做的:
首先我定义:

@Injectable()
export class AR {

 public roll: FR;

 constructor() {
   this.roll = new FR("test");
 }

 set_roll(_roll) {
    this.roll = _roll;
 }

 get_roll() {
    return this.roll;
 }

}

然后,将类添加为App.Meult.ts中的提供程序。
import { AR } from ...
@NgModule({
  ...
 providers: [ AR, ...]
 })

在app.compontents.ts中,我定义了一个函数:
export class MyApp {
rootPage:any = HomePage;

constructor(public ar: AR) {

  platform.ready().then(() => {
    ...
  }

}

activate(roll){
    this.ar.set_roll(roll);
   }

}

在app.html中,我定义了一个按钮,该按钮应将该变量“ar”设置为一个新值,该值存储在名为“myarray”的数组中:
<ion-content>
    <ion-list>
          <ion-item *ngFor="let i of myArray (click)="activate(i)">
   </ion-list>
</ion-content>

但是,全局变量的值不会更改。它始终保持ar类的构造函数中定义的初始值“test”。
它应该印在另一页上:
import { AR } from ...;


@Component({
  selector: 'page-home',
  templateUrl: 'home.html'
})
export class HomePage {

    ar_name: string;

    constructor(..., public ar: AR) {
      this.ar_name = this.ar.get_roll().get_rollname();
    }

(get_rollname是ar类的函数,只返回一个字符串。)
在相应的HTML中:
 <ion-footer>
  <div> {{ar_name}} </div>
 </ion-footer>

我做错什么了?
编辑:
export class FR {

    private rollname: string;

    constructor(rollname: string) {
      this.rollname = rollname
    }

    set_rollname(newName: string) {
       this.rollname = newName;
    }

    get_rollname() {
       return this.rollname;
    }

}

最佳答案

谢谢大家的帮助。实际上,我把整个数据数组和各自的功能放在一个提供者中,解决了整个问题。像这样,所有的数据和方法对所有页面都是可用的。使用提供者-它使一切变得更加简单。

关于angular - 更新Ionic 3中的全局变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48175320/

10-16 08:48