2016-09-15 66 views
1

我想在Angular 2中創建一個組件,我可以從HTML傳入值。我以爲我會使用ElementRef,但我似乎無法無誤地引用它。Angular2組件ElementRef不能正常工作

這裏是我的代碼:

import { Component, ElementRef } from '@angular/core'; 
@Component({ 
    selector: 'my-app', 
    template: ` 
    <p>Hello World</p> 
    ` 
}) 
export class MyAppComponent { 
    constructor(private el: ElementRef) {} 
    ngOnInit() { 
     this.el.nativeElement.style.backgroundColor = 'red'; 
    } 
} 

該代碼只是爲了測試,如果我能控制的,或者至少檢查組件的DOM元素,但它不能正常工作。

後來,我希望能夠從HTML獲取變量,如

<my-app variable="value"></my-app> 

的錯誤,我得到的是

Unhandled Promise rejection: Can't resolve all parameters for MyAppComponent: (?). ; Zone: <root> ; Task: Promise.then ; Value: Error: Can't resolve all parameters for MyAppComponent: (?). 

我使用的是最近發佈的2.0.0版本(非RC )

+0

你會發布你收到的錯誤嗎?我讀過,在某些情況下,elementRef不受支持。 – Clint

+0

未處理的Promise拒絕:無法解析MyAppComponent的所有參數:(?)。 ;區域:;任務:Promise.then;值:錯誤:無法解析MyAppComponent的所有參數:(?)。 – user2791747

+0

檢查這個問題,我認爲它會解決你的問題http://stackoverflow.com/questions/34970778/get-root-component-elementref-or-componentref-angular-2 – Clint

回答

0

適合我。

import { Component, ElementRef } from '@angular2/core'; 
    @Component({ 
      selector: 'my-app', 
      template: ` 
      <p>Hello World</p> 
      {{title}} 
      ` 
}) 

export class MyAppComponent { 
title: string = "This Text will be in red Color"; 

constructor(private el: ElementRef) {} 
ngOnInit() { 
    this.el.nativeElement.style.backgroundColor = 'red'; 
} 
} 
+1

我認爲你可能會使用舊版本。我正在使用2.0.0版本。我知道這是可能的舊版本,但它似乎不可能了。我想我們將不得不尋找一種不同的方式來從主機元素傳入數據。 – user2791747