史上最全!Angular 7面试题及其最佳答案

Angular7面试题

下面列出了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是必需的

来源:

https://www.srcmini02.com/33381.html

微信公众号
手机浏览(小程序)
0
分享到:
没有账号? 忘记密码?