2017-06-16 2 views
0

Je souhaite créer un composant dans l'angle 2 qui prendra quelques paramètres d'entrée. Je suis un peu confus quant à l'utilisation de la classe ou de l'interface pour la saisie et pourquoi? composant suivant, je l'ai utilisé l'interfaceUtilisation de la classe ou de l'interface pour saisir des données dans le composant dactylographié

import { Component, Input, Output, EventEmitter } from "@angular/core"; 

@Component({ 
    moduleId: module.id, 
    selector: 'combo-compo', 
    template: ` 
     <select name="theme" class="form-control" [ngModel]="selectedObject" (ngModelChange)="onChangeObj($event)"> 
     <option [ngValue]="theme" *ngFor="let theme of dataObject" >{{theme.value}}</option> 
     </select> 
      ` 
}) 

export class ComboComponent { 
    selectedObject: ComboInterface; 
    @Input() dataObject: Array<ComboInterface>; 
    @Output() onComboChange = new EventEmitter(); 

    onChangeObj(newObj: ComboInterface) { 
    this.selectedObject = newObj; 
    this.onComboChange.emit(this.selectedObject); 
    } 

} 

interface ComboInterface { 
    key: string; 
    value: string; 
} 
+0

Dans le cas de '@ Input', je pense qu'il est plus pratique d'utiliser' interface' plutôt que 'class' – Abrar

Répondre

2

dactylographiée, vous êtes libre d'utiliser l'une des CLASS ou INTERFACE.

Voici les raisons qui peuvent vous aider à prendre la bonne décision dans le choix de la structure correcte:

Interface: Vous ne pouvez déclarer vos propriétés avec son type correspondant. Cela signifie que vous ne pouvez pas avoir de fonctions, ni que ces propriétés peuvent être initialisées au moment de la déclaration.

Classe: Vous pouvez déclarer vos propriétés avec une valeur par défaut et également avec les fonctions.

PS: Les interfaces sont préférées aux cours quand vous voulez juste la structure des données

1

Interfaces sont préférables à des classes car ils sont plus souples, et une classe pourrait mettre en œuvre cette interface et être utilisée pour l'entrée. De même, si vous effectuez un test unitaire, vous pouvez créer des classes de simulation ou de remplacement qui implémentent l'interface afin que vous puissiez tester vos composants de manière isolée. En pratique, si vous n'avez qu'une seule classe qui implémente cette interface et qu'elle n'est utilisée nulle part ailleurs, il n'est probablement pas nécessaire de créer une interface supplémentaire, et vous devriez peut-être juste nous un cours.