Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >构造函数和ngOnInit的区别?

构造函数和ngOnInit的区别?

提问于 2017-12-22 03:36:34
回答 2关注 0查看 715

为什么要使用ngOnInit,如果我们已经有了constructor?

回答 2

akjok54

发布于 2017-12-22 03:54:45

一个(构造函数)与类实例相关,与Angular2无关。我的意思是可以在任何类上使用构造函数。你可以在这里为新创建的实例进行一些初始化处理。

第二个对应于Angular2组件的生命周期website:

引自官方的网站:

  • ngOnChanges 在输入或输出绑定值更改时调用
  • ngOnInit 在第一个之后被调用 ngOnChanges

所以你应该使用,ngOnInit如果初始化处理依赖于组件的绑定(例如组件的参数定义@Input),否则构造就足够了...

秋之夕颜清

发布于 2017-12-22 03:54:07

我认为最好的例子是使用服务。假设我想在组件获取“激活”时从服务器获取数据。假设我在从服务器获取数据之后还想对数据做一些额外的事情,也许我得到一个错误,并希望以不同的方式记录。

使用ngOnInit通过构造函数很容易,它也限制了我需要添加到我的应用程序的多少个回调层。

例如:

代码语言:txt
AI代码解释
复制
export class Users implements OnInit{
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
    user_list: Array<any>;
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
    constructor(private _userService: UserService){
代码语言:txt
AI代码解释
复制
    };
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
    ngOnInit(){
代码语言:txt
AI代码解释
复制
        this.getUsers();
代码语言:txt
AI代码解释
复制
    };
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
    getUsers(){
代码语言:txt
AI代码解释
复制
        this._userService.getUsersFromService().subscribe(users =>  this.user_list = users);
代码语言:txt
AI代码解释
复制
    };
代码语言:txt
复制
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
}

用我的构造函数,我可以调用我的_userService并填充我的user_list,但也许我想用它做一些额外的事情。像确保一切都是upper_case,我不完全确定我的数据是如何通过。

所以它使得使用ngOnInit更容易。

代码语言:txt
AI代码解释
复制
export class Users implements OnInit{
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
    user_list: Array<any>;
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
    constructor(private _userService: UserService){
代码语言:txt
AI代码解释
复制
    };
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
    ngOnInit(){
代码语言:txt
AI代码解释
复制
        this.getUsers();
代码语言:txt
AI代码解释
复制
    };
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
    getUsers(){
代码语言:txt
AI代码解释
复制
        this._userService.getUsersFromService().subscribe(users =>  this.user_list = users);
代码语言:txt
AI代码解释
复制
        this.user_list.toUpperCase();
代码语言:txt
AI代码解释
复制
    };
代码语言:txt
复制
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
}

这使得它更容易看到,所以我只是在我的组件中调用我的函数,而不是在其他地方挖掘它。真的,这只是另一个工具,你可以使它更容易阅读和使用在未来。另外,我发现把一个函数调用放在一个构造函数中真的是不好的做法!

和开发者交流更多问题细节吧,去 写回答
相关文章
js 中的构造函数,构造函数作用,构造函数和普通函数的区别
函数的定义方式: 1.声明式函数定义: function 函数名 (){};这种定义方式,会将函数声明提升到该函数所在作用域的最开头,也是就无论你在这个函数的最小作用域的那儿使用这种方式声明的函数,在这个作用域内,你都可以调用这个函数为你所用。 2.函数表达式:let fun = function(){}; 此方式定义的函数,只能在该作用域中,这段赋值代码执行之后才能通过fun()调用函数,否则,由于变量声明提升,fun === undefined。 3.new Function 形式: var fun1 = new Function (arg1 , arg2 ,arg3 ,…, argN , body );Function构造函数所有的参数都是字符串类型。除了最后一个参数, 其余的参数都作为生成函数的参数即形参。这里可以没有参数。最后一个参数, 表示的是要创建函数的函数体。
全栈程序员站长
2022/10/04
3.6K0
java构造代码块,构造函数和普通函数的区别和调用时间
在这里我们谈论一下构造代码块,构造函数和普通函数的区别和调用时间。 构造代码块:最早运行,比构造函数运行的时间好要提前,和构造函数一样,只在对象初始化的时候运行。 构造函数:运行时间比构造代码块时间晚,也是在对象初始化的时候运行。没有返回值,构造函数名称和类名一致。 普通函数:不能自动调用,需要对象来调用,例如a.add(); 如果只看代码运行先后顺序的话:构造代码块>构造函数>普通函数 下面给一个程序
用户3030674
2018/09/14
1.5K0
java构造代码块,构造函数和普通函数的区别和调用时间
js中构造函数和普通函数的区别_函数声明和函数定义
b.构造函数的调用方式:需要使用new关键字来调用 new Person();
全栈程序员站长
2022/10/04
3.3K0
js中构造函数和普通函数的区别_函数声明和函数定义
C#构造函数里的base和this的区别
父类的构造函数总是在子类之前执行的。既先初始化静态构造函数,后初始化子类构造函数。
跟着阿笨一起玩NET
2018/09/19
1.5K0
Java和c++构造函数的区别是什么?
如果你是一个c++程序员,现在正在学习Java,你会发现这两种流行的面向对象编程语言有很多相似之处。这两种语言都支持抽象、封装、类、对象和其他OOP概念。但是,也有一些细微的差别。Java和c++都有构造函数,它们在Java中的工作方式与在c++中的工作方式相同。但是,他们的名字是不一样的。
程序你好
2018/09/29
1.5K0
Java和c++构造函数的区别是什么?
工厂函数和构造函数
工厂模式是一种设计模式,说白了就是一种简单的函数,这个函数可以创建对象,为它添加属性和方法,然后返回这个对象。就像一个工厂一样,可以批量制作某种类型的对象。这种设计模式是就是为了降低代码冗余。
大熊G
2022/11/14
7590
构造函数和原型
在典型的OOP的语言中(如Java) , 都存在类的概念,类就是对象的模板,对象就是类的实例,但在ES6之前, JS中并没用引入类的概念。 ES6,全称ECMAScript6.0 , 2015.06发版。但是目前浏览器的JavaScript是ES5版本,大多数高版本的浏 览器也支持ES6 ,不过只实现了ES6的部分特性和功能。 在ES6之前,对象不是基于类创建的,而是用一种称为构建函数的特殊函数来定义对象和它们的特征。
星辰_大海
2020/10/23
4900
构造函数和原型
构造函数和原型
image.png
清出于兰
2022/05/11
3910
构造函数和原型
构造函数和原型
实例成员就是构造函数内部通过this添加的成员 如下列代码中uname age sing 就是实例成员,实例成员只能通过实例化的对象来访问
梨涡浅笑
2020/10/27
3670
构造函数和原型
构造函数的作用和特点[通俗易懂]
1. 构造函数的作用 构造函数主要用来在创建对象时完成对对象属性的一些初始化等操作, 当创建 对象时, 对象会自动调用它的构造函数。一般来说, 构造函数有以下三个方面 的作用: ■ 给创建的对象建立一个标识符; ■ 为对象数据成员开辟内存空间; ■ 完成对象数据成员的初始化。
全栈程序员站长
2022/10/04
7880
OpenCV copyTo、clone、“=”与拷贝构造函数的区别
opencv中为矩阵复制提供了copyTo函数、clone函数、重载运算符和拷贝构造函数,用法非常简单:
chaibubble
2022/05/07
1.7K0
OpenCV copyTo、clone、“=”与拷贝构造函数的区别
类的构造函数和析构函数
一、构造函数和析构函数的由来 类的数据成员不能在类的声明时候初始化,为了解决这个问题? 使用构造函数处理对对象的初始化。构造函数是一种特殊的成员函数,与其他函数不同,不需要用户调用它,而是创建对象的时
用户5521279
2019/06/02
1.9K0
图示构造函数的析构顺序(默认构造函数、拷贝构造函数和赋值运算符重载函数)
示例代码: #include<iostream> using namespace std; class Test { public: Test(int a=10,int b=20) { _a = a; _b = b; cout << this << " "; cout << "Test(int,int)" << endl; cout << "_a = " << _a << ",_b = " << _b << e
lexingsen
2022/02/24
1.1K0
图示构造函数的析构顺序(默认构造函数、拷贝构造函数和赋值运算符重载函数)
构造函数和析构函数
c++要将类像初始化基本类型一样使用类。然而我们前面介绍过C++语言中的结构体,但是类没有办法像结构体一样的初始化 因为结构体的数据成员都是公开的,而类是私有的,因此,只有合适的成员函数,可以将类初始化。一般来说,最好在创建对象时进行初始化。C++提供了一个特殊的成员函数,用于构造新对象,将值赋给数据成员。C++提供声明,又程序员来定义。
用户7272142
2023/10/11
2370
构造函数和析构函数
什么叫构造方法?_构造方法和普通方法之间的区别
构造方法是一种特殊的方法,它是一个与类同名且没有返回值类型的方法。对象的创建就是通过构造方法来完成,其功能主要是完成对象的初始化。当类实例化一个对象时会自动调用构造方法。构造方法和其他方法一样也可以重载。
全栈程序员站长
2022/09/20
6730
C++构造函数 | 构造函数
C++在建立一个对象时,常常需要作某些初始化,如果一个数据成员未被赋值,则它的值是不可预知的,因为在系统为它分配内存时,保留了这些存储单元的原状,这就成为了这些数据成员的初始值,在C++中,对象是一个实体,它反映了客观事物的属性,是应该有确定的值的。
小林C语言
2021/01/26
2.2K0
C++构造函数 | 构造函数
JS高级——构造函数和原型
在典型的OOP的语言中(如Java),都存在类的概念,类就是对象的模板,对象就是类的实例,但在ES6之前,JS中并没有引入类的概念。
岳泽以
2022/10/26
1.5K0
JS高级——构造函数和原型
婴儿的出生为你解惑构造函数和构造代码块
今天回想这几天走过的Java路程,发现漏了一个点,就是构造代码块,我绞尽脑汁,也没想起来它的作用,我骗不了我自己,就搜相关资料,重新学习,在学习的过程中发现构造代码块和构造函数有一定的联系,为了捕捉这种联系,我总结了一个案例,这个案例能加深你对构造函数和构造代码块的理解。我写这个博客一是为了避免下次再被构造代码块这块石头绊倒,二是为了能给需要解惑的人提供一些帮助,还是那句话:
泰斗贤若如
2019/06/19
2770
strcpy函数和strncpy函数的区别
strcpy函数和strncpy函数的原型介绍在我的另一篇文章中介绍了,见strcpy,strncpy,strlen等函数原型 strcpy:字串复制   原型:char *strcpy(char *dest, char *src);   功能:把src所指由'\0'结束的字符串复制到dest所指的数组中。   说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。   返回指向dest的指针。   注意:当src串长度>dest串长度时,程序仍会将整个src
猿人谷
2018/01/17
3.2K0
perl '-&gt;' 和 '::' 的区别 | 方法和函数的区别
我们知道在 Perl 中,Function 和 Subroutine 这两个名称是可以互换的。但是函数和方法的区别到底是什么呢?
宋天伦
2023/10/20
3080

相似问题

请问 函数服务 和 serverless应用 有什么区别?

1810

==和equals区别?

1224

HashSet和HashMap的区别?

2239

Runnable和Callable的区别?

1161

HashSet和HashMap的区别?

2164
相关问答用户
腾讯云TDP | TDP会员擅长3个领域
平安资管 | 架构师擅长4个领域
到家集团 | 技术VP擅长5个领域
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档