下面列出了Angular 7面试中最常见的问题和答案。
1)什么是Angular 7?与AngularJS有何不同?
Angular7是Angular的最新版本。 AngularJS是Angular的第一个版本, 也称为Angular 1.0。
Angular7是Angular1.0的完整重写。它支持双向数据绑定, 以及其他一些功能, 例如ng更新, ng添加, Angular元素, Angular材质+ CDK组件, Angular材质入门组件, CLI工作区, 库支持, Tree Shakable Providers, 动画性能改进和RxJS v6等等
2)什么是Angular框架?
Angular是基于TypeScript的开源Web框架和平台。它用于构建Web /移动和桌面应用程序。
该框架的主要功能包括:声明性模板, 依赖项注入, 端到端工具等。这些功能使Angular中的Web开发变得容易。
3)AngularJS和Angular有什么区别?
Angular是对AngularJS的完全重写。它是一个基于组件的框架, 其中应用程序是单个组件的树。
AngularJS和Angular之间的区别:
AngularJS | Angular |
---|---|
Angular基于服务/控制器。 | |
它使用TypeScript生成应用程序。 | |
它遵循基于组件的UI方法。 | |
这是一个移动友好的框架。 | |
通过使用Angular, 你可以轻松创建SEO友好应用程序。 |
4)Angular 7中的结构指令和属性指令有什么区别?
结构化指令用于通过删除和添加DOM元素来更改DOM布局。这些指令在更改视图结构方面要好得多。结构指令的示例是NgFor和Nglf。
属性指令用作元素的特征。例如, 模板”语法”指南中的内置NgStyle之类的指令是属性指令。
5)NgModule中的”声明”, “提供者”和”导入”之间有什么区别?
NgModule中的声明之间的区别”, “提供者”和”导入”:
- 声明用于使当前模块中的指令(包括组件和管道)可用于当前模块中的其他指令。指令, 组件或管道的选择器只有在声明或导入时才与HTML匹配。
- 提供者用于使DI知道服务和价值。它们被添加到根范围, 并且被注入到其他具有它们依赖关系的服务或指令中。提供程序的一种特殊情况是延迟加载的模块, 它们具有自己的子注入器。默认情况下, 仅将延迟加载的模块的提供程序提供给该延迟加载的模块(不像其他模块那样提供整个应用程序)。
- import使其他模块的导出声明在当前模块中可用。
6)Angular的关键组件是什么?
Angular的关键组件:
组件:组件是角度应用程序的基本构建块, 用于控制HTML视图。
模块:模块是有角度的基本构建块的集合, 例如组件, 指令, 服务等。应用程序分为逻辑部分, 每段代码称为”模块”, 用于执行单个任务。
模板:模板用于表示Angular应用程序的视图。
服务:用于创建可以在整个应用程序之间共享的组件。
元数据:可用于向Angular类添加更多数据。
7)解释Angular的体系结构概述。
Angular是用于开发移动和Web应用程序的最受欢迎的Web开发框架。它使用称为IONIC的跨平台移动开发, 这就是为什么它不仅限于Web应用程序。
Angular应用程序有7个主要构建块:
- 零件
- 范本
- 元数据
- 数据绑定
- 指令
- 服务
- 依赖注入
Angular应用程序的基本构建块是NgModules, 它为组件提供编译上下文。 Angular应用程序由一组NgModule定义, 并且始终至少具有启用引导的根模块以及更多功能模块。
- 组件定义模板视图
- 组件使用服务
NgModules使开发人员可以将应用程序组织成相互连接的功能块。
CLI生成的最小” AppModule”的NgModule属性如下:
- 声明:用于声明应用程序组件。
- 导入:每个应用程序都必须导入BrowserModule才能在浏览器中运行该应用程序。
- 提供者:没有什么可以开始的。
- Bootstrap:这是Angular创建并插入到index.html主机网页中的根AppComponent。
8)如何将Angular 6更新为Angular 7?
你可以使用以下命令将Angular 6更新为Angular 7:
ng update @angular/cli @angular/core
9)Angular 7中的UrlSegment接口是什么?
在Angular 7中, UrlSegment接口表示单个URL段, 构造函数, 属性和方法, 如下所示:
class UrlSegment {
constructor(path: string, parameters: {...})
path: string
parameters: {...}
toString(): string
}
UrlSegment是两个斜线之间URL的一部分, 它包含与该段关联的路径和矩阵参数。
10)什么是Angular 7中的Bootstrap(ng Bootstrap)?
ng Do Bootstrap是Angular 7中添加的新生命周期挂钩, Do Bootstrap是接口。
例子
//ng Do Bootstrap - Life-Cycle Hook Interface
classApp Module implements Do Bootstrap {
ng Do Bootstrap(appRef: ApplicationRef) {
appRef.bootstrap(AppComponent);
}
}
11)Angular7中的指令是什么?
在Angular7中, 指令用于将行为添加到现有DOM元素或现有组件实例中。
例如
import { Directive, ElementRef, Input } from '@angular/core';
@Directive({ selector: '[myHighlight]' })
export class HighlightDirective {
constructor(el: ElementRef) {
el.nativeElement.style.backgroundColor = 'green';
}
}
现在, 此指令以绿色背景扩展了HTML元素的行为, 如下所示:
Highlight me!
12)Angular7中有哪些组件?
组件是Angular应用程序的基本构建块, 类似于树形结构。组件是指令的子集, 但与指令不同的是, 组件始终具有模板, 并且模板中每个元素只能实例化一个组件。
例如:
import { Component } from '@angular/core';
@Component ({
selector: 'my-app', template: ` <div>
<h1>{{title}}</h1>
<div>Learn Angular6 with examples</div>
</div> `, })
export class AppComponent {
title: string = 'Welcome to Angular world';
}
13)组件和指令之间有什么区别?
组件(@component)是带有模板的指令。组件和指令之间的一些主要区别是:
Component | Directive |
---|---|
如果注册指令, 则必须使用@Directive元数据注释 | |
指令用于设计可重复使用的组件。 | |
指令用于向现有DOM元素添加行为。 | |
每个DOM元素可以使用许多指令。 | |
指令不使用View。 |
14)Angular7中的模板是什么?
模板是一个HTML视图, 你可以在其中通过将控件绑定到Angular组件的属性来显示数据。你可以将组件的模板存储在两个位置之一。你可以使用template属性内联定义它, 也可以在单独的HTML文件中定义模板, 并使用@Component装饰器的templateUrl属性在组件元数据中链接到它。
例如:
将内联模板与模板语法一起使用
import { Component } from '@angular/core';
@Component ({
selector: 'my-app', template: '
<div>
<h1>{{title}}</h1>
<div>Learn Angular</div>
</div>
'
})
export class AppComponent {
title: string = 'Hello World';
}
使用单独的模板文件, 例如app.component.html
import { Component } from '@angular/core';
@Component ({
selector: 'my-app', templateUrl: 'app/app.component.html'
})
export class AppComponent {
title: string = 'Hello World';
}
15)什么是模块?
模块是应用程序中的逻辑边界。将应用程序划分为单独的模块以分离应用程序的功能。
例如:用@NgModule装饰器声明的app.module.ts根模块
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { AppComponent } from './app.component';
@NgModule ({
imports: [ BrowserModule ], declarations: [ AppComponent ], bootstrap: [ AppComponent ]
})
export class AppModule { }
在这里, NgModule装饰器具有三个选项:
- 导入选项用于导入其他从属模块。默认情况下, 任何基于Web的角度应用程序都需要BrowserModule。
- 声明选项用于定义相应模块中的组件。
- bootstrap选项告诉Angular在应用程序中要引导哪个组件。
16)Angular7中添加了哪些新功能?
以下是Angular7中添加的新功能的列表:
- Angular7在新更新中显示出优雅的外观。
- 它使用滚动包提供虚拟滚动
. - 通过使用@ angular / cdk / drag-drop模块, 它可以帮助你使用拖放属性。
- 在Angular7中, 库会使用Material Design的更新版本自动对其自身进行更改。
- 如果未初始化属性, Angular7将为@Output提供更好的错误处理。
- Angular7为Node v10提供了额外的支持。
Angular7的其他一些功能是:
Angular控制台:这是一个可下载的控制台, 用于在本地计算机上启动和运行Angular项目。
@ angular / fire:这是npm的最新更新, 并且是Angular7的第一个稳定版本。
NativeScript:它可以帮助你制作一个针对Web和已安装的移动设备构建的项目。
StackBlitz:StackBlitz 2.0现在已发布, 其中包括Angular Language Service以及选项卡式编辑等更多功能。
AngularJS基于MVC架构。
它使用JavaScript来构建应用程序。
它遵循控制器的概念。
它不是移动友好的框架。
在AngularJS中创建SEO友好应用程序非常困难。
如果注册组件, 则必须使用@Component元数据注释
组件用于将应用程序分解为较小的组件。
组件用于创建UI小部件。
每个DOM元素只能存在一个组件。
@View装饰器或templateurl / template是必需的
评论前必须登录!
注册