angular 2模板使用console.log

emv*_*idi 34 angular

我想在内联模板中使用console.log但无法找到任何方向.

@Component({
  selector:"main",
  providers: [ItemService],
  template:`
    <ul>
     <li *ngFor="let item of items">
      {{console.log(item)}} <----- ??? 
      <p>{{item.name}}</p>
     </li>
    </ul>

  `
})
export class HomeComponent {
  private items: Array<ItemModel>;

  constructor() {}
}
Run Code Online (Sandbox Code Playgroud)

Gün*_*uer 63

你不能访问全局,静态,......

您只能访问该视图所属组件的属性.

你可以添加一个

log(val) { console.log(val); }
Run Code Online (Sandbox Code Playgroud)

你的组件,并使用它

{{log(item)}} 
Run Code Online (Sandbox Code Playgroud)

但要做好准备,以便经常记录(每次更改检测都会运行).

对于调试,我更喜欢

 {{item | json}} 
Run Code Online (Sandbox Code Playgroud)


Viv*_*shi 25

更好的方法:

这样您就可以访问模板端的所有控制台属性


组件方面:

export class AppComponent  {
  console = console;
}
Run Code Online (Sandbox Code Playgroud)

模板面:

{{ console.log('----------------> Logging') }}
{{ console.warn('----------------> Warning') }}
{{ console.error('----------------> error') }}
Run Code Online (Sandbox Code Playgroud)

工作演示


小智 10

一种简单的调试方法是为此创建一个管道:

import { Pipe, PipeTransform } from '@angular/core';

@Pipe({
    name: 'log'
})
export class LogPipe implements PipeTransform {
    transform(value: any, args?: any): any {
        console.log(value);
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后你只需要在模板中写这个:

{{ variable | log }}
Run Code Online (Sandbox Code Playgroud)