📜  角度生命周期- - Html (1)

📅  最后修改于: 2023-12-03 15:27:55.571000             🧑  作者: Mango

角度生命周期 - Html

什么是角度?

角度(Angular)是一个开源的 TypeScript 框架,由 Google 维护并开发。它是用于构建 Web 应用程序的一种工具集。

角度的主要特性包括:

  • 两个向导: 命令行工具和 HTML 工具。
  • 页面设计工具: 通过使用 Angular CLI 来帮助您快速构建页面。
  • Angular Material:一个可复用的 UI 组件库。
  • 脚手架: Angular 提供了一些内置的脚手架,用于快速搭建应用程序和组件。
角度生命周期

在使用 Angular 开发应用程序时,组件、指令和服务将共同创建一个“应用程序生命周期”。

这个生命周期包含许多钩子函数,可以在 Angular 解析组件或指令之前或之后执行任意代码。

以下是角度生命周期中的几个钩子函数:

ngOnChanges

ngOnChanges 是一个用于监视输入属性变化的钩子函数。当一个输入属性的值发生变化时,此函数将被调用。

此函数具有一个单独的参数:一个包含了当前和先前属性值的对象。

import { Component, OnChanges, Input } from '@angular/core';

@Component({
  selector: 'basic-component',
  template: `
    <p>{{ input }}</p>
  `,
})
export class BasicComponent implements OnChanges {
  @Input() input: string;

  ngOnChanges(changes: SimpleChanges) {
    console.log('New value:', changes.input.currentValue);
    console.log('Old value:', changes.input.previousValue);
  }
}
ngOnInit

ngOnInit 是一个在组件初始化时调用的钩子函数。这个函数用于执行一些初始化代码,例如获取数据。

import { Component, OnInit } from '@angular/core';

@Component({
  selector: 'basic-component',
  template: `
    <p>{{ data }}</p>
  `,
})
export class BasicComponent implements OnInit {
  data: any;

  ngOnInit() {
    this.data = this.getData();
  }

  getData() {
    // API 调用或其他数据获取
  }
}
ngDoCheck

ngDoCheck 是一个 Angular 的“脏检查”机制,其可以用于检测任何模型的更改。每当 Angular 在组件的模型更改时,ngOnChanges 钩子函数都会跟随执行。

import { Component, DoCheck } from '@angular/core';

@Component({
  selector: 'basic-component',
  template: `
    <p>{{ input }}</p>
  `,
})
export class BasicComponent implements DoCheck {
  @Input() input: string;

  ngDoCheck() {
    console.log('Change detected:', this.input);
  }
}
ngOnDestroy

ngOnDestroy 是一个组件销毁前调用的钩子函数。您可以在此处进行任意的资源清理工作,例如取消订阅。

import { Component, OnDestroy } from '@angular/core';

@Component({
  selector: 'basic-component',
  template: `
    <p>{{ input }}</p>
  `,
})
export class BasicComponent implements OnDestroy {
  @Input() input: string;
  subscription: Subscription;

  ngOnInit() {
    this.subscription = this.getData().subscribe(
      (data: any) => (this.input = data),
      (error: any) => console.error(error),
    );
  }

  ngOnDestroy() {
    this.subscription.unsubscribe();
  }

  getData() {
    // API 调用或其他数据获取
  }
}
结论

Angular 通常对于那些需要在组件、指令和服务之间交互的大型项目非常有用。在理解 Angular 的生命周期和钩子函数后,您可以更高效地编写 Angular 应用程序。

以上就是角度生命周期在 Html 中的介绍。