2016-03-02 10 views
6

मैंने निम्नलिखित सरल उदाहरण घटक बनाया है जो @ कॉम्पोनेंट सजावट की मेजबान संपत्ति का उपयोग कर घटक DOM तत्व में कुछ विशेषताओं और श्रोता को जोड़ता है। मेरे मामले में [ngClass] का कोई प्रभाव नहीं पड़ता है। क्या कोई जानता है कि इसे क्यों और कैसे ठीक किया जाए?घटक सजावट की मेजबान संपत्ति में ngClass काम नहीं करता

import {Injector, Component} from "angular2/core"; 
import {NgClass} from "angular2/common"; 
import {SelectionService} from "../selection-service" 

@Component({ 
    selector: 'my-component', 
    template: `<div>inner template</div>`, 
    host: { 
    'style': 'background-color: yellow', // works 
    '[ngClass]': "{'selected': isSelected}", // does not work 
    '(mouseover)': 'mouseOver($event)', // works 
    '(mouseleave)': 'mouseLeave($event)' // works 
    }, 
    directives: [NgClass] 
}) 
export class MyComponent { 
    private isSelected = false; 

    constructor(private selectionService:SelectionService) { 
    this.selectionService.select$.subscribe((sel:Selection) => { 
     this.isSelected = sel; // has no effect on ngClass 
    }); 
    } 

    mouseOver($event) { 
    console.log('mouseOver works'); 
    } 

    mouseLeave($event) { 
    console.log('mouseLeave works'); 
    } 
} 

मैं कोणीय 2.0.0-बीटा 7 का उपयोग कर रहा हूं।

उत्तर

13

ngClass एक निर्देश है और होस्ट बाइंडिंग में उपयोग नहीं किया जा सकता है। होस्ट बाइंडिंग केवल का समर्थन करता है

  • संपत्ति '[propName]':'expr'
  • विशेषता '[attr.attrName]':'expr'
  • घटना (event)="someFunction(event);otherExpr",
  • शैली [style.width]="booleanExpr"
  • वर्ग [class.className]="booleanExpr" बंधन।
  • वर्ग [class]="expr" जहां expr अंतरिक्ष अलग वर्गों
+1

अपने जवाब के लिए धन्यवाद के साथ एक श्रृंखला है। 'NgClass' के अपने विशिष्ट मामले में मैंने' [class.selected] = "चुना गया है" 'जोड़ा, जो काम करता है। – thinkh

+0

'ngClass' अधिकतर आवश्यक है जब आप जिन कक्षाओं को टॉगल करना चाहते हैं वे गतिशील होते हैं (माता-पिता या समान द्वारा पारित) अन्य मामलों में उपलब्ध बाध्यकारी अभिव्यक्ति ठीक काम करती हैं। –

+0

मुझे मेजबान संपत्ति (वाक्यविन्यास और उपयोग) के बारे में विस्तृत स्पष्टीकरण कहां मिल सकता है? Angular.io पर एपीआई के डॉक्टर में लगभग कुछ भी नहीं है। – user1643352

संबंधित मुद्दे