gpt4 book ai didi

angular - 如何使用 Ionic 3 和 Angular 4 创建可重用组件

转载 作者:太空狗 更新时间:2023-10-29 17:43:44 25 4
gpt4 key购买 nike

我想为我的应用创建一个可重复使用的 header 。所以,我做了:

创建组件(app-header):

app-header.ts:

import { Component } from '@angular/core';

@Component({
selector: 'app-header',
templateUrl: 'app-header.html'
})
export class AppHeaderComponent {

text: string;

constructor() {
console.log('Hello AppHeaderComponent Component');
this.text = 'Hello World';
}

}

具有 HTML 的:

app-header.html:

<div>
{{text}}
</div>

并且我已经将 AppHeaderComponent 添加到 @NgModule 中的 declarations:

...

import { AppHeaderComponent } from '../components/app-header/app-header';

@NgModule({
declarations: [
MyApp,
TabsPage,
AppHeaderComponent
],

...

我正在使用 TabsTemplate,我想在每个选项卡中添加这个组件,所以,我在 feed.html(我的一个选项卡)上做了:

<app-header></app-header>

<ion-content>

...

但它给出了以下错误:

Uncaught Error: Template parse errors: 'app-header' is not a known element: 1. If 'app-header' is an Angular component, then verify that it is part of this module. 2. If 'app-header' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message. (" -->

[ERROR ->]

因此,我将 app-header.ts 更改为:

import { Component, NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';

@Component({
selector: 'app-header',
templateUrl: 'app-header.html'
})
@NgModule({
schemas: [ CUSTOM_ELEMENTS_SCHEMA ]
})
export class AppHeaderComponent {

text: string;

constructor() {
console.log('Hello AppHeaderComponent Component');
this.text = 'Hello World';
}

}

但是还是报同样的错误

我该怎么做?

更新:

我正在使用 Tabs,所以,我有:

tabs.ts:

import { Component } from '@angular/core';

import { FeedPage } from '../feed/feed';
import { AboutPage } from '../about/about';

@Component({
templateUrl: 'tabs.html'
})
export class TabsPage {

tabFeed = FeedPage;
tabAbout= AboutPage;

constructor() {

}
}

tabs.html:

<ion-tabs>
<ion-tab [root]="tabFeed" tabIcon="paper"></ion-tab>
<ion-tab [root]="tabAbout" tabIcon="search"></ion-tab>
</ion-tabs>

每个选项卡加载一个页面,如 feed.html(在问题中引用)

代码架构:

enter image description here

components.modules.ts 有:

import { NgModule } from '@angular/core';
import { AppHeaderComponent } from './app-header/app-header';
@NgModule({
declarations: [AppHeaderComponent],
imports: [],
exports: [AppHeaderComponent]
})
export class ComponentsModule {}

最佳答案

您需要将其从 app.module.ts 中删除,因为它已在 ComponentsModule 中声明。

app.module.ts

@NgModule({
declarations: [
MyApp,
TabsPage,
//AppHeaderComponent <-- need to remove this
],

之后,您需要导入 ComponentsModule,如下所示,在您需要的页面module 中。

my.module.ts

@NgModule({
declarations: [
MyPage,
],
imports: [
IonicPageModule.forChild(MyPage),
ComponentsModule <-- here you need
],
})
export class MyPageModule { }

关于angular - 如何使用 Ionic 3 和 Angular 4 创建可重用组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47383815/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com