웹 프론트엔드 JS 튜토리얼 고급 Angular2에서 Dom의 오해를 피하는 방법

고급 Angular2에서 Dom의 오해를 피하는 방법

Apr 03, 2018 am 09:33 AM
오해 피하다

이 글은 주로 고급 Angular2에서 Dom의 오해를 피하는 방법을 소개합니다. 편집자는 그것이 꽤 좋다고 생각하므로 지금 공유하고 참고로 제공하겠습니다. 에디터를 따라가며 함께 살펴볼까요

머리말

Angular2의 디자인 목표는 브라우저와 DOM을 독립적으로 만드는 것입니다. DOM은 복잡하므로 컴포넌트를 분리하면 애플리케이션을 더 쉽게 테스트하고 리팩토링할 수 있습니다. 크로스 플랫폼을 지원하기 위해 Angular는 추상화를 통해 다양한 플랫폼의 차이점도 캡슐화합니다.

Content

1. 왜 DOM을 직접 조작할 수 없나요?

Angular2는 AOT 정적 컴파일 모드를 채택합니다. 이 형식에서는 템플릿 유형이 안정적이고 안전해야 합니다. javascript 및 jquery 언어를 직접 사용하는 것은 컴파일이 오류를 미리 감지하지 못하기 때문에 불안정하므로, angle2만 typescript 언어를 선택합니다. , javascript의 상위 집합(이 언어는 컴파일 중에 오류를 감지할 수 있음)입니다.

2. DOM을 작동하는 세 가지 잘못된 방법:

@Component({ ... })
export class HeroComponent {
 constructor(private _elementRef: ElementRef) {}

 doBadThings() {
  $('id').click(); //jquery
  this._elementRef.nativeElement.xyz = ''; //原生的ElementRef
  document.getElementById('id'); //javascript
 }
}
로그인 후 복사

3.

크로스 플랫폼을 지원하기 위해 Angular는 추상화 계층을 통해 다양한 플랫폼의 차이점을 캡슐화합니다. 예를 들어 추상 클래스 Renderer, Renderer2, 추상 클래스 RootRenderer 등이 정의됩니다. 또한 ElementRef, TemplateRef, ViewRef, ComponentRef, ViewContainerRef 등의 참조 유형이 정의됩니다.

4. DOM(ElementRef 및 Renderer2)을 작동하는 올바른 방법:

product.comComponent.html

<p>商品信息</p>
<ul>
 <li *ngFor="let product of dataSource| async as list">
  {{product.title}}
 </li>
</ul>
<p #dia>
</p>
로그인 후 복사

product.comComponent.ts

import { Component, OnInit,Renderer2, ViewChild,ElementRef,AfterViewInit} from &#39;@angular/core&#39;;
@Component({
 selector: &#39;app-product&#39;,
 templateUrl: &#39;./product.component.html&#39;,
 styleUrls: [&#39;./product.component.css&#39;]
})

export class ProductComponent implements OnInit,AfterViewInit {
 @ViewChild(&#39;dia&#39;) dia:ElementRef ;定义子试图
 ngOnInit() {
 /**1.
 *创建一个文本
 */
  this.dia.nativeElement.innerHTML="这只是一个测试的文档";

 /**2.
  *添加click事件
  */
 let ul=this.element.nativeElement.querySelector(&#39;ul&#39;);
  this.render2.listen(ul,"click",()=>{
   this.render2.setStyle(ul,"background","blue");

ngAfterViewInit(){
/**3.
 *修改背景颜色
 */
 let li=this.element.nativeElement.querySelector(&#39;ul&#39;);
 this.render2.setStyle(li,"background","red");
 }
}
로그인 후 복사

요약

사실, 언어를 배울 때 우리는 먼저 그 사양을 따르고 이전 언어와 차이점을 인정한 다음 이전 언어와 다른 점과 왜 이렇게 하는지 깊이 이해해야 합니다. 그렇지 않으면 이해할 수 없습니다. 이 언어가 도움이 되기를 바랍니다.




위 내용은 고급 Angular2에서 Dom의 오해를 피하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Java 오류: JavaFX 보기 오류, 처리 및 방지 방법 Java 오류: JavaFX 보기 오류, 처리 및 방지 방법 Jun 25, 2023 am 08:47 AM

JavaFX는 Java 플랫폼용 사용자 인터페이스 프레임워크로 Swing과 유사하지만 더 현대적이고 유연합니다. 그러나 이를 사용할 때 일부 보기 오류가 발생할 수 있습니다. 이 문서에서는 이러한 오류를 처리하고 방지하는 방법을 소개합니다. 1. JavaFX 보기 오류 유형 JavaFX를 사용할 때 다음과 같은 보기 오류가 발생할 수 있습니다. NullPointerException 이는 가장 일반적인 오류 중 하나이며 일반적으로 초기화되지 않았거나 존재하지 않는 개체에 액세스하려고 할 때 발생합니다. 이건 아마

Java 오류: 인코딩 및 디코딩 오류, 해결 및 방지 방법 Java 오류: 인코딩 및 디코딩 오류, 해결 및 방지 방법 Jun 24, 2023 pm 05:27 PM

Java는 매우 널리 사용되는 프로그래밍 언어이며 많은 프로젝트가 Java로 작성됩니다. 그러나 개발 과정에서 "인코딩 및 디코딩 오류"가 발생하면 우리는 혼란스럽고 혼란 스러울 수 있습니다. 이 기사에서는 Java 인코딩 및 디코딩 오류의 원인과 이러한 오류를 해결하고 방지하는 방법을 소개합니다. 코덱 오류란 무엇입니까? Java 개발 중에 텍스트와 파일을 처리해야 하는 경우가 많습니다. 그러나 다른 텍스트와 파일이 생성될 수 있습니다.

Java 오류: JDBC 오류, 해결 및 방지 방법 Java 오류: JDBC 오류, 해결 및 방지 방법 Jun 24, 2023 pm 02:40 PM

Java가 널리 적용되면서 Java 프로그램이 데이터베이스에 연결할 때 JDBC 오류가 자주 발생합니다. JDBC(JavaDatabaseConnectivity)는 데이터베이스에 연결하는 데 사용되는 Java의 프로그래밍 인터페이스입니다. 따라서 JDBC 오류는 Java 프로그램이 데이터베이스와 상호 작용할 때 발생하는 오류입니다. 다음은 가장 일반적인 JDBC 오류 중 일부와 이를 해결하고 방지하는 방법입니다. ClassNotFoundException 이것은 가장 일반적인 JDBC입니다.

Python 변수 명명 규칙에 대한 일반적인 오해와 해결 방법 Python 변수 명명 규칙에 대한 일반적인 오해와 해결 방법 Jan 20, 2024 am 09:10 AM

Python 변수 명명 규칙에 대한 일반적인 오해와 해결 방법 Python 프로그래밍에서는 올바른 변수 명명이 매우 중요합니다. 좋은 명명 규칙을 사용하면 코드를 더 읽기 쉽고 유지 관리하기 쉽게 만들 수 있으며 잠재적인 오류를 피할 수 있습니다. 그러나 초보자는 종종 일반적인 변수 명명에 대한 오해를 합니다. 이 기사에서는 몇 가지 일반적인 오해를 소개하고 해결 방법과 구체적인 코드 예제를 제공합니다. 오해 1: 예약된 키워드를 변수 이름으로 사용하십시오. Python에는 예약된 키워드가 있습니다.

PHP 언어 개발에서 무한 루프에 빠지지 않는 방법 PHP 언어 개발에서 무한 루프에 빠지지 않는 방법 Jun 10, 2023 pm 02:36 PM

PHP 언어 개발에서 우리는 특정 코드를 제한 없이 실행하여 프로그램이 중단되거나 심지어 서버가 중단되는 무한 루프에 자주 직면합니다. 이 문서에서는 무한 루프에 빠지지 않고 개발자가 이 문제를 더 잘 해결하는 데 도움이 되는 몇 가지 방법을 소개합니다. 1. 루프에서 무한 재귀 호출을 피하세요. 루프에서 함수나 메서드를 호출할 때 함수나 메서드에 루프 문이 포함되어 있으면 무한 재귀 호출이 형성되어 프로그램이 중단됩니다. 이런 일이 발생하지 않도록 하려면

PHP5.6에서 PHP7.4로 업그레이드할 때 호환성 문제를 방지하는 방법은 무엇입니까? PHP5.6에서 PHP7.4로 업그레이드할 때 호환성 문제를 방지하는 방법은 무엇입니까? Sep 05, 2023 am 08:25 AM

PHP5.6에서 PHP7.4로 업그레이드할 때 호환성 문제를 방지하는 방법은 무엇입니까? 지속적인 기술 발전으로 인해 일반적으로 사용되는 프로그래밍 언어인 PHP는 서로 다른 버전 간에 호환성 문제를 겪는 경우가 많습니다. 이전 버전에서 최신 버전으로 업그레이드하기로 결정하면 특히 PHP5.6에서 PHP7.4로 업그레이드하는 동안 예상치 못한 문제가 발생하기 쉽습니다. 호환성 문제를 방지하는 데 도움이 되도록 이 문서에서는 몇 가지 일반적인 문제와 해당 솔루션을 소개합니다. 구문 오류 PH

Golang 개발 노트: 메모리 누수 문제를 방지하는 방법 Golang 개발 노트: 메모리 누수 문제를 방지하는 방법 Nov 23, 2023 am 09:38 AM

Golang은 강력한 동시성 기능과 내장된 가비지 수집 메커니즘으로 널리 알려진 빠르고 효율적인 개발 언어입니다. 그러나 Golang으로 개발하더라도 여전히 메모리 누수가 발생할 수 있습니다. 이 문서에서는 개발자가 메모리 누수 문제를 방지하는 데 도움이 되는 몇 가지 일반적인 Golang 개발 고려 사항을 소개합니다. 순환 참조를 피하세요 순환 참조는 Golang의 일반적인 메모리 누수 문제 중 하나입니다. 두 객체가 서로를 참조할 때 이러한 객체에 대한 참조가 적시에 해제되지 않으면

PHP 및 MySQL 인덱스 오류 상황과 이를 방지하고 해결하는 방법 PHP 및 MySQL 인덱스 오류 상황과 이를 방지하고 해결하는 방법 Oct 15, 2023 am 11:52 AM

PHP 및 MySQL 인덱스 오류 상황 및 이를 방지하고 해결하는 방법 소개: PHP 및 MySQL은 웹 애플리케이션을 개발할 때 일반적으로 사용되는 프로그래밍 언어 및 데이터베이스입니다. 대용량 데이터를 처리할 때 인덱싱은 쿼리 성능을 향상시키는 중요한 요소 중 하나입니다. 그러나 인덱스 오류로 인해 쿼리 속도가 느려지고 애플리케이션 성능에 영향을 줄 수 있습니다. 이 기사에서는 PHP 및 MySQL 인덱스의 오류를 소개하고 몇 가지 실용적인 솔루션 및 방지 방법을 제공하는 것을 목표로 합니다. 1. 인덱스 실패란 무엇입니까?

See all articles