我是爱奥尼亚的新手,角度和字体。我在所有页面中都需要一个变量“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/