2017-04-12 155 views
1

我是Angular 2和TypeScript的新手,我正试图在代码中使用我的另一个组件viz头中的Test类的变量。如何在角度2中导入另一个组件中的类?

import { Component } from '@angular/core'; 
@Component({ 
    selector: 'app-root', 
    templateUrl: './app.component.html', 
    styleUrls: ['./app.component.css'] 
}) 
export class AppComponent { 
} 
export class Test{ 
static var1:number=10; 
} 

var1是静态的,因为我想在不使用测试实例的情况下使用它。

代码在头即

import { Component, OnInit } from '@angular/core'; 
import {Test} from '../app.component'; 
@Component({ 
    selector: 'app-header', 
    Template;`<h1> Hello</h1> 
      <h1>{{Test.var1}}</h1>` 
}) 
export class HeaderComponent implements OnInit { 
    constructor() { } 

    ngOnInit() { 
    } 

} 

该代码仅示出你好不是“10”,这是一个静态变量的另一种组分。

预先感谢您。

回答

4
import { Component, OnInit } from '@angular/core'; 
import {Test} from '../app.component'; 
@Component({ 
    selector: 'app-header', 
    Template:`<h1> Hello</h1> 
      <h1>{{test.var1}}</h1>` 
}) 
export class HeaderComponent implements OnInit { 
    constructor(private test: Test) { } 

    ngOnInit() { 
    } 

} 

误区

  • 使用templateTemplate
  • 使用:;模板后
  • 使实例构造函数
+0

这还没有工作 –

+0

现在有什么问题?控制台错误? –

+0

我将对象obj设为obj = new Test(); 和

obj.var1

用于模板 但没有显示我10作为输出 –

0

这里是另一种方式:

import { Component, OnInit } from '@angular/core'; 
import { Test } from './app.component'; 
@Component({ 
    selector: 'app-header', 
    template: `<h1> Hello</h1><h1>{{var1}}</h1>` 
}) 
export class HeaderComponent implements OnInit { 
    var1 = Test.var1; // place static var into local var 
    ngOnInit() { 
    } 
} 
+0

这是行得通的,但为什么我们无法直接访问它。 –

+0

请参阅以下答案:http:// stackoverflow。com/a/39193573看起来该模板的作用域是组件实例,因此它无法访问全局变量或静态变量。在我看来这是一件好事。全球国家通常应该避免。 –

1

所以,即使你不希望实例测试的情况下,你仍然需要使用您的组件的实例属性。

在您的组件中,只需将Test类绑定到一个实例属性,然后在模板中访问该属性即可。

test = Test; 

访问这与模板:

{{ test.var1 }} 
0

您设置的变量为公共的。您已将Test初始化为私有财产。因此它的范围就在组件内部而不在模板上。

相关问题