11

이 질문에는 이미 답변이 있습니다.

나는 프레임 워크에서이 두 개념의 차이점을 이해하기 위해 애 쓰고있다.

AngularJS 1.x의 지시문이 무엇인지 잘 알고 있으며 Angular 2의 구성 요소와 지시문은 모두이 개념과 매우 유사합니다.


1 답변


18

모든 구성 요소를보기가있는 지시문으로 생각할 수 있습니다.

결과

구성 요소에만보기가 있다는 사실에 따라 다음과 같은 몇 가지 결과가 있습니다.

  • 구성 요소 만 정의 할 수 있습니다.directives구성 요소 자체 및 루트 인 전체 하위 트리에서 사용됩니다.
  • 구성 요소 만 정의 할 수 있습니다.pipes구성 요소와 전체 서브 트리의 루트에 사용됩니다.
  • 구성 요소 만 정의 할 수 있습니다.viewEncapsulation그들은 지시어와 달리 관점을 가질 수 있기 때문에
  • 프레임 워크가ElementInjector지정된 구성 요소의 경우Host주사기.
  • 변경 감지기의 개별 인스턴스는 구성 요소에 대해서만 작성되며 구성 요소 만 변경 감지 전략을 정의 할 수 있습니다.

세부 정보

각도 2에서 구성 요소를 정의하는 고전적인 방법은 다음과 같습니다.

@Component({
  selector: '...',
  // ...
})
@View({
  template: '...'
})
class ComponentCtrl {...}

그만큼@View데코레이터는 주어진 컴포넌트에 대한 뷰 정의를 도와줍니다. 앵귤러 팀은 하나의 구성 요소가 여러 뷰 정의 (구성 요소가 작동 할 각 플랫폼마다 하나씩)를 가질 수 있기 때문에 초기에 별도의 데코레이터로 외부화되었습니다 (위 예제와 마찬가지로). 최근이 데코레이터가 삭제되었으므로 현재 다음을 사용하여 구성 요소를 정의 할 수 있습니다.

@Component({
  selector: '...',
  template: '...',
  //...
})
class ComponentCtrl {...}

이 방법을 사용하면 동일한 결과를 얻을 수 있지만 타이핑 횟수는 적습니다. 내부적으로 Angular 2는 사용자가 설정 한 속성을 기반으로 적절한보기 메타 데이터를 추가합니다.@Component장식 자.

연결된 질문


관련된 질문

최근 질문