我是Ionic2和Angular的新手。将变量声明为构造函数输入在类中做什么?
import { LoadingController } from 'ionic-angular';
export class MyPage {
constructor(public loadingCtrl: LoadingController <-----) {
}
presentLoading() {
let loader = this.loadingCtrl.create({
content: "Please wait...",
duration: 3000
});
loader.present();
}
}
答案 0 :(得分:3)
将变量声明为构造函数输入
构造函数参数类似于允许传递参数的方法或函数参数
let page = new MyPage(aLoadingController)
除了您自己不创建MyPage
个实例,但Angular2的依赖注入(DI)会为您完成。
如果找到与参数类型(或@Inject(xxx)
)注释匹配的提供者(如果有),则DI查找它的注册表,然后将找到的提供者创建的实例传递给{{ 1}}来电。
为此,Angular2需要类似new MyPage(...)
,@Page()
,@Component()
,@Directive()
,@Pipe()
的装饰器。如果找到这样的装饰器,它会分析构造函数参数列表以了解需要注入的内容。
如果@Injectable()
或public
前置于构造函数参数,则还会创建实例级属性,并自动为此属性分配传递的值(纯TypeScript功能)
我不了解Ionic,是否有一些特殊的事情需要考虑。