मेरे पास दो नेस्टेड @Components
एन कोणीय 2 है। दृश्य केवल ठीक है लेकिन यह हमेशा पहली बार जावास्क्रिप्ट त्रुटि फेंकता है। टाइपस्क्रिप्ट में मेरा कोड यहां है।कोणीय 2 चयनकर्ता नेस्टेड घटकों में किसी भी तत्व से मेल नहीं खाता
अनुप्रयोग HTML:
<body>
<my-app>loading...</my-app>
</body>
अनुप्रयोग घटक:
import {bootstrap, Component} from 'angular2/angular2';
import {CanvasComponent} from "./CanvasComponent";
@Component({
selector: 'my-app',
template: `
<h1>{{title}}</h1>
<h2>My Games</h2>
<div>
<my-canvas></my-canvas>
</div>
`,
directives: [CanvasComponent]
})
class AppComponent {
}
bootstrap(AppComponent);
कैनवास घटक:
import {bootstrap, Component, View} from 'angular2/angular2';
@Component({
selector: 'my-canvas'
})
@View({
template: `
<div>
<span>Balls:</span>
<div>{{canvas.length}}</div>
</div>
`
})
export class CanvasComponent {
canvas = [1,2,3];
}
bootstrap(CanvasComponent);
त्रुटि है:
EXCEPTION: The selector "my-canvas" did not match any elements
ठीक है, अब मान लें कि '' CanvasComponent' HTTP_PROVIDERS' और अन्य सेवाओं की आवश्यकता है। आप इसे कैसे इंजेक्ट करेंगे? मुझे लगता है कि रूट घटक को इन सेवाओं को इंजेक्शन देने की परवाह करनी चाहिए। – Pablo
@ पाब्लो, बस इसे अपने ऐप 'बूटस्ट्रैप (ऐपकंपोनेंट, [HTTP_PROVIDERS]) के लिए बूटस्ट्रैप कॉल में जोड़ें;' फिर कैनवास कॉम्पोनेंट में एक कन्स्ट्रक्टर जोड़ें जिसमें आपको 'इंजेक्ट' के साथ एनोटेटेड की आवश्यकता है, उदाहरण के लिए: 'कन्स्ट्रक्टर (@ इंजेक्ट (एचटीपी) सार्वजनिक http: एचटीपी) {} ' – svallory
@ स्वेल्लरी धन्यवाद, मैंने @ कॉम्पोनेंट के अंदर 'प्रदाताओं' संपत्ति का उपयोग करके DI को पूरा किया है। Https://github.com/ghpabs/angular2-seed-project/blob/master/src/scripts/todo/todo.component.ts#L12-L17 देखें। इस तरह से मुझे लगता है कि घटक बेहतर encapsulated है। विचार? – Pablo