2017-04-11 136 views
0

我只是盯着Angular,并且有一个简单的角度组件(在左边的流程问题中,您看到左边的glyphicon glyphicon-star)我想要显示但我只能得到不可点击的明星。角度2组件不能正常工作

这里是我的代码: favorite.component.ts

import {Component} from 'angular2/core'; 

@Component({ 
    selector: 'favorite', 
    template: `  
<i 
     class="glyphicon" 
     [class.glyphicon-star-empty] ="!isFavorite" 
     [class.glyphicon-star]="isFavorite" 
     (click)="onClick()"> 
    </i> 
    ` 
}) 
export class FavoriteComponent { 
    isFavorite = false; 

    onclick() { 
     this.isFavorite = !this.isFavorite; 
    } 
} 

在app.component我试图使这个 '收藏' 部分:如何使

import {Component} from 'angular2/core'; 
import {CoursesComponent} from './courses.component' 
import {AuthorsComponent} from './authors.component' 
import {FavoriteComponent} from './favorite.component' 



@Component({ 
    selector: 'my-app', 
    template: '<h1>My First Angular 2 App</h1><courses></courses><authors></authors><button class ="btn btn-primary">Submit</button><br><favorite></favorite>', 
    directives: [CoursesComponent, AuthorsComponent] 
}) 
export class AppComponent { } 

组件在我的app.component?

全部代码在这里:https://github.com/aindriu80/Angular2withTypeScript

代码不加载组件 - 我只得到喜欢的喜爱 F12 View Source Chrome

+0

可以也显示您的模块定义 –

+0

我自己的新进angular2,但是在很多教程,他们往往有自己的app.module列出你想使用的组件并通过导入platformbrowserdynamic –

+0

在main.ts文件中引导模块。您是什么意思模块定义?我只有一个componet favorite.component.ts typescrpypt – Aindriu

回答

0

我知道了。我的app.components.ts文件中有一个缺失的指令。感谢您指出区分大小写。

app.component.ts

import {Component} from 'angular2/core'; 
import {CoursesComponent} from './courses.component' 
import {AuthorsComponent} from './authors.component' 
import {FavoriteComponent} from './favorite.component' 



@Component({ 
    selector: 'my-app', 
    template: '<h1>My First Angular 2 App</h1><courses></courses><authors></authors><button class ="btn btn-primary">Submit</button><br><favorite></favorite>', 
    directives: [CoursesComponent, AuthorsComponent, FavoriteComponent] 
}) 
export class AppComponent { } 

而且我没有在favorite.components.ts文件上的onClick大写C()。

favorite.component.ts:

import {Component} from 'angular2/core'; 

@Component({ 
    selector: 'favorite', 
    template: `  
<i 
     class="glyphicon" 
     [class.glyphicon-star-empty]="!isFavorite" 
     [class.glyphicon-star]="isFavorite" 
     (click)="onClick()"> 
    </i> 
    ` 
}) 
export class FavoriteComponent { 
    isFavorite = false; 

    onClick(){ 
     this.isFavorite = !this.isFavorite; 
    } 
} 
0

你可以用它在a标签,并单击事件移动到它:

import {Component} from 'angular2/core'; 

@Component({ 
    selector: 'favorite', 
    template: ` 
    <a (click)="onClick()"> 
     <i 
      class="glyphicon" 
      [class.glyphicon-star-empty]="!isFavorite" 
      [class.glyphicon-star]="isFavorite" 
      > 
     </i> 
    </a> 
    ` 
}) 
export class FavoriteComponent { 
    isFavorite = false; 

    onClick() { 
     this.isFavorite = !this.isFavorite; 
    } 
} 
+0

谢谢!但是图形并没有显示出来? – Aindriu

+0

对不起,有些遗漏双引号 –

+0

无后顾之忧,无法正常工作。没有显示任何东西只是在控制台浏览器中铬 – Aindriu

0

试试这个。

删除多余的双引号 ''“,

<i 
    class="glyphicon" 
    [class.glyphicon-star-empty] ="!isFavorite" 
    [class.glyphicon-star]="isFavorite" 
    (click)="onClick()"> 
</i> 

如果不工作,请尝试以下

<i class="glyphicon" [ngClass]="{'glyphicon-star-empty':!isFavorite,'glyphicon-star':isFavorite}" 
    (click)="onClick()"> 
</i> 
+0

IM主界面,首先,我认为在没有得到任何可能存在的问题是它的有点混乱开始。我试过onclick,但没有运气。 – Aindriu

0

请注意,JavaScript的标识是区分大小写的。

你的组件模板具有(click)=“onClick()”,但组件类定义了onclick(){...}。也尝试构建一些代码作为应用程序文件夹保存所有文件,很难遵循。 检查官方风格指南:https://angular.io/docs/ts/latest/guide/style-guide.html#!#04-04

+0

移动越快如果这种混乱 – Aindriu

+0

我看到您使用的是旧版本的Angular2(beta7)。 这是你想要达到的目标吗?从测试版开始? 目前Angular v4已经发布 - http://angularjs.blogspot.ro/2017/03/angular-400-now-available.html – andreim

+0

如果您的目的是基于Angular2开始一个项目,我认为最好的是使用Angular CLI这个版本1.0,它是稳定的 - https://github.com/angular/angular-cli 这是一个命令行工具,它可以加速你的开发。 – andreim

0

如果我将不得不机会,我为此在下列方式

import {Component} from 'angular2/core'; 

@Component({ 
    selector: 'favorite', 
    template: ` 
    <a (click)="onClick()"> 
     <i class="glyphicon" *ngIf="isFavorite" [ngClass]="glyphicon-star"> 
     </i> 

     <i class="glyphicon" *ngIf="!isFavorite" [ngClass]="glyphicon-star-empty"> 
     </i> 
    </a> 
    ` 
}) 
export class FavoriteComponent { 
    isFavorite = false; 

    onClick() { 
     this.isFavorite = !this.isFavorite; 
    } 
} 
+0

它不工作。我有另一个称为app.component.ts的角度文件,其中加载了favorite.components.ts,但没有任何内容显示在屏幕上 - 仅在中查看源代码 – Aindriu