组件中的Angular 2组件未显示?

时间:2016-06-06 15:18:31

标签: angularjs typescript angular nativescript

我正在使用Angular 2和Nativescript构建移动应用程序。我的当前设置包含HomeComponent,其中包含DockComponentDockComponent呈现并且工作正常,但是,我现在想要抽出Dock中的四个按钮中的每一个,所以我创建了一个LoginComponent并尝试将其包含在我的DockComponent中,但它不是显示,见下文 - 我做错了什么?

我认为通过引用组件选择器并导入组件并将其添加到父组件的providers数组中,它会起作用吗?

Dock.Component.ts:

import {Component, OnInit} from "@angular/core";
import {Login} from "../Login/login.component";

@Component({
    selector: "dock",
    templateUrl: `Components/Dock/dock.html`,
    styleUrls: ["Components/Dock/dock.css"],
    providers: [Login]
})

export class Dock implements OnInit {

}

Login.Component.ts:

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

@Component({
    selector: "login",
    templateUrl: `Components/Dock/Login/login.html`,
    styleUrls: ["Components/Dock/Login/login.css"],
    providers: []
})

export class Login implements OnInit {

    page: Page;
    ngOnInit() {
        this.page = <Page>topmost().currentPage;
    }
}

Dock.html:

<FAB row="8" col="0" icon="res://help" class="fab-button help" rippleColor="#f1f1f1" (tap)="fabTap()"></FAB>
<FAB row="8" col="1" class="fab-button bluetooth" icon="res://bluetoothg" rippleColor="#f1f1f1" (tap)="fabTap()"></FAB>
<login></login>
<FAB row="8" col="3" icon="res://plus" class="fab-button" id="add" rippleColor="#f1f1f1" (tap)="bluetoothAdd()"></FAB>
<ActivityIndicator row="8" col="3" busy="{{ isScanning }}" id="ActivityIndicator"></ActivityIndicator>

的login.html:

(这是从<login></login>现在位于dock.html文件中的地方进行处理和粘贴 - 它工作得很好)

<FAB row="8" col="2" icon="res://facebook" class="fab-button" id="facebook" rippleColor="#f1f1f1" (tap)="login('Facebook')"></FAB>
<FAB row="8" col="2" icon="res://google" class="fab-button" id="google" rippleColor="#f1f1f1" (tap)="login('Google')"></FAB>
<FAB row="8" col="2" icon="res://amazon" class="fab-button" id="amazon" rippleColor="#f1f1f1" (tap)="login('amazon')"></FAB>
<FAB row="8" col="2" icon="res://key" class="fab-button login" rippleColor="#f1f1f1" (tap)="socialClick()"></FAB>

1 个答案:

答案 0 :(得分:3)

尝试更改:

providers: [Login]

要:

directives: [Login]

providers似乎无效。要允许模板访问子组件,您需要将其定义为directive。请注意,这是一个数组,因此可以在此处定义多个组件。 More details