2016-09-23 24 views
22

मैं कोणीय 2 में एक नौसिखिया हूं और मैं अपना पहला ऐप काम करना चाहता हूं। मैं टाइपस्क्रिप्ट का उपयोग कर रहा हूँ। मैं app.component.ts जिसमें मैं todos.component लेकिन मैं संकलन समय पर निम्न त्रुटि हो रही है कहा जाता है एक और compoent के लिए एक निर्देश बना दिया है:कोणीय 2 घटक निर्देश काम नहीं कर रहे

[0] app/app.component.ts(7,3): error TS2345: Argument of type '{ moduleId: string; selector: string; directives: typeof TodosComponent[]; templateUrl: string; s ...' is not assignable to parameter of type 'Component'. 
[0] Object literal may only specify known properties, and 'directives' does not exist in type 'Component'. 

मेरे कोड इस तरह है :

index.html

<html> 
    <head> 
    <title>Angular 2 QuickStart</title> 
    <meta charset="UTF-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <link rel="stylesheet" href="styles.css"> 
    <!-- 1. Load libraries --> 
    <!-- Polyfill(s) for older browsers --> 
    <script src="node_modules/core-js/client/shim.min.js"></script> 
    <script src="node_modules/zone.js/dist/zone.js"></script> 
    <script src="node_modules/reflect-metadata/Reflect.js"></script> 
    <script src="node_modules/systemjs/dist/system.src.js"></script> 
    <!-- 2. Configure SystemJS --> 
    <script src="systemjs.config.js"></script> 
    <script> 
     System.import('app').catch(function(err){ console.error(err); }); 
    </script> 
    </head> 
    <!-- 3. Display the application --> 
    <body> 
    <app-root>Loading...</app-root> 
    </body> 
</html> 

app.componen t.ts

import { Component } from '@angular/core'; 
import {TodosComponent} from './todos/todos.component'; 

@Component({ 
    moduleId : module.id, 
    selector: 'app-root', 
    directives: [TodosComponent], 
    templateUrl : 'app.component.html', 
    styleUrls : ['app.component.css'] 
}) 

export class AppComponent { 
    title: string = "Does it work?"; 
} 

app.component.html:

<h1> Angular 2 application</h1> 
{{title}} 
<app-todos></app-todos> 

todos.component.ts

import { Component, OnInit } from '@angular/core'; 

@Component({ 
    moduleId : module.id, 
    selector: 'app-todos', 
    template: '<h2>Todo List</h2>' 
}) 

export class TodosComponent { 
    title: string = "You have to do the following today:";  
} 

निर्देश के बिना, एप्लिकेशन ठीक काम करता है। किसी भी मदद की सराहना की जाएगी!

अग्रिम धन्यवाद!

+0

क्या आप गलत तरीके से निर्देश नहीं बना रहे हैं? कोणीय 2 दस्तावेज़ीकरण से 'आयात {निर्देशक, एलिमेंटरफ, इनपुट, रेंडरर}' @ कोणीय/कोर 'से; @Directive ({चयनकर्ता: '[myHighlight]'}) निर्यात वर्ग HighlightDirective { निर्माता (एल: ElementRef, रेंडरर: प्रतिपादक) { renderer.setElementStyle (el.nativeElement, 'पृष्ठभूमि रंग', 'पीला'); } } ' – Pradeepb

+2

यदि आप नवीनतम कोणीय फाइनल का उपयोग कर रहे हैं, तो' निर्देशक 'अब @ घटक' मेटाडेटा में मौजूद नहीं है (इसलिए त्रुटि)। यदि आप एक ट्यूटोरियल से बाहर जा रहे हैं, तो आपको एक नया खोजने की कोशिश करनी चाहिए। थोड़े समय में बहुत सारे बदलाव हुए हैं, और बहुत सारे ट्यूटोरियल पुराने हैं। मैं व्यक्तिगत रूप से बस [कोणीय दस्तावेज] (https://angular.io/docs/ts/latest/) पर जाऊंगा और वहां से शुरू करूंगा। –

+0

@peeskillet से सहमत हैं, इस https://angular.io/docs/ts/latest/guide/attribute-directives.html पर एक नज़र डालें। बस @ कॉम्पोनेंट के 'निर्देश:' का उपयोग न करें, केवल इसे 'app.module.ts' की घोषणाओं में जोड़ें: '। – haxpor

उत्तर

50

आपके app.component.ts में आप directive: [TodosComponent] परिभाषित करते हैं। निर्देश संपत्ति आरसी 6 में @Component() सजावट से हटा दी गई है।

  1. एक NgModule बना सकते हैं और
  2. declarations: [] सरणी के अंदर TodosComponent घोषित:

    इस का हल, के लिए है।

AppModule का एक उदाहरण के लिए यहाँ देखें:

https://angular.io/docs/ts/latest/tutorial/toh-pt3.html

+0

धन्यवाद! बस! – candino

+2

@Alexander क्या होगा यदि मैं पूरे एप्लिकेशन के विपरीत किसी विशिष्ट घटक के लिए निर्देश लोड करना चाहता हूं? एफवाईआई - मैं tinymce पाठ संपादक लोड करने की कोशिश कर रहा था। –

+1

आपको उस एकल घटक से मॉड्यूल बनाना चाहिए और वहां घटक और निर्देश दोनों घोषित करना चाहिए। –

3

module.id में शुरू में जब angular2 नए संस्करण और कोणीय CLI के साथ बीटा version.Since पर था जोड़ा गया है का समर्थन इसे करने के लिए आवश्यक नहीं है मॉड्यूल आईडी: module.id, आप .ts फ़ाइलों से हटा सकते हैं

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