Angular 2和Ionic 2:构造函数,ionViewDidLoad和ngOnInit方法之间有什么区别

ife*_*ing 13 ionic2 angular

构造函数,ionViewDidLoad和ngOnInit方法之间有什么区别.在每种情况下哪些行动是适当的.

Nik*_*hil 1

就 ionic2 而言 constructor :简单来说,我们使用它来创建插件、服务等的实例。例如:您有一个页面(视图),您想要在其中显示所有学生的列表,并且您有一个 json 文件包含所有学生(这个文件是你的数据文件)你要做的就是创建一个服务,在这个服务中你将创建一个方法并点击一个http.get请求来获取json数据,那么这里你需要什么?http只需这样做:

import {Http} from '@angular/http';
@Injectable()
export class StudentService{
    constructor(public http: Http){}
    getAllStudents(): Observable<Students[]>{
        return this.http.get('assets/students.json')
        .map(res => res.json().data)     
        }
    }
Run Code Online (Sandbox Code Playgroud)

现在再次注意构造函数,如果我们想使用此服务方法,我们将转到我们的视图/页面并:

import {StudentService} from './student.service';
import { SocialSharing } from '@ionic-native/social-sharing';
export class HomePage implements OnInit {

  constructor(public _studentService: StudentService, public socialSharing: SocialSharing) {
   }
Run Code Online (Sandbox Code Playgroud)

再次注意这里的构造函数,我们正在构造函数中创建 StudentService 的实例,还有一件事,我们正在使用 SocialSharing 插件,以便使用我们也在构造函数中创建该实例。

OnInit:这在 ionic2 中确实是令人惊奇的事情,或者我们可以在 AngularJs2 中说。通过上面相同的例子,我们可以看到事实是什么ngOnInit。因此,您已准备好服务方法,现在在您的视图/页面中,您希望在视图出现时立即提供学生列表数据,这应该是加载时自动发生的第一个操作,因为当视图加载学生时列表应该是可见的。所以类实现OnInit并且你定义ngOnInit。例子:

export class HomePage implements OnInit {
...
....
constructor(....){}

ngOnInit(){
    this._studentService.getAllStudents().subscribe(
     (students: Students[]) => this.students = students, 
    )
Run Code Online (Sandbox Code Playgroud)

我希望这个解释能消除您对这两者的疑虑。谢谢