나는 이오닉 3의 페이지에 커스텀 컴포넌트를 임포트하는 것에 머물렀다. 이것은 이온 2에서는 비교적 사소했지만 Ionic 3에서는 작동하지 않는다.
기존의 페이지 모듈이 있습니다.other
. 달리기 후ionic g component test
, 나는 자동 생성 된 가져 오기ComponentsModule
로other.module.ts
그것을에 추가했습니다.imports
정렬.
import { ComponentsModule } from "../../components/components.module";
@NgModule({
declarations: [
OtherPage,
],
imports: [
IonicPageModule.forChild(OtherPage),
ComponentsModule,
],
})
export class OtherPageModule {}
그런 다음 페이지에 구성 요소 선택기를 다음과 같이 추가합니다.<test></test>
.
결과는 다음과 같습니다.
polyfills.js:3 Unhandled Promise rejection: Template parse errors:
'test' is not a known element:
1. If 'test' is an Angular component, then verify that it is part of this module.
2. To allow any element add 'NO_ERRORS_SCHEMA' to the '@NgModule.schemas' of this component. ("
<ion-content padding>
[ERROR ->]<test> </test>
</ion-content>
"): ng:///AppModule/OtherPage.html@16:0 ; Zone: <root> ; Task: Promise.then ; Value: Error: Template parse errors:
'test' is not a known element:
1. If 'test' is an Angular component, then verify that it is part of this module.
이것은 나를 위해 작동하지 않습니다. 나는 또한module
테스트 구성 요소에 대한 및 동일한 방식으로 가져온 있지만이 나를 위해 작동하지 않습니다.
나는 이것에 대한 문서 나 예제를 찾지 못하는 것 같다. Ionic 3에서 가져온 커스텀 컴포넌트는 어떻게 되나요?
당신은 아래처럼 그것을 할 필요가있다 :
import { ComponentsModule } from "../../components/components.module";
@NgModule({
declarations: [
OtherPage,
ComponentsModule,
],
imports: [
IonicPageModule.forChild(OtherPage),
],
entryComponents: [
ComponentsModule
]
})
export class OtherPageModule {}
귀하는test
구성 요소.
@NgModule({
declarations: [
TestComponent,
],
imports: [],
exports: [TestComponent]
})
export class ComponentModule {}
여기에 표시된대로https://github.com/ionic-team/ionic/issues/11560
불행히도 게으른로드 구성 요소, 지시문, 파이프를 만드는 방법은 없습니다. 어떤 방법 으로든 우리가 관리한다면 알려주세요.
따라서 page.module.ts에 ComponentsModule을 가져올 수 있습니다. 여기 내거야.
import { NgModule } from '@angular/core';
import { IonicPageModule } from 'ionic-angular';
import { ComponentsModule } from ../../components/components.module';
@NgModule({
declarations: [
WoDetailsPage,
],
imports: [
ComponentsModule,
IonicPageModule.forChild(WoDetailsPage),
],
})
export class WoDetailsPageModule {}
@NgModule({ imports:[IonicModule], //no forRoot here declarations:[HomePage], exports:[HomePage], entryComponents:[HomePage] //<-- add all your module components to here })
- Sameer Achanta
한 가지 방법은 각 구성 요소를 app.module.ts 파일에 추가 한 다음 다음과 같이 선언하는 것입니다.
import { MyComp } from "../../components/my-comp/my-comp";
@NgModule({
declarations: [
OtherPage,
MyComp
],
imports: [
IonicPageModule.forChild(OtherPage)
],
})
export class OtherPageModule {}
이것은 내가 그것을 어떻게 해결 했는가이다.
CustomComponent
.같은 수입custom-component.module.ts아래 그림과 같이:
import { CustomComponent } from './custom-component';
@NgModule({
declarations: [
CustomComponent,
],
imports: [
IonicPageModule.forChild(CustomComponent),
],
exports : [ CustomComponent ]
})
export class CustomComponentPageModule { }
이제 아래와 같이 사용자 정의 구성 요소를 원하는 페이지에 가져옵니다.
import { ContentDrawerPageModule } from '../../../components/custom-component/custom-component.module';
@NgModule({
declarations: [
HelloWorldPage,
],
imports: [
IonicPageModule.forChild(HelloWorldPage),
CustomComponentPageModule,
]
})
export class HelloWorldPageModule {}
그리고 사용자 정의 구성 요소를 성공적으로 가져 왔습니다.(CustomComponent
)귀하의 페이지로(HelloWorldPage).
성공적으로CUSTOM_ELEMENTS_SCHEMA선언을 내 모듈에 넣고 선택 자의 이름을 "-"대시로 지정하도록 강요하므로 다음과 같이 사용해야합니다.
<MyPlayer-comp></MyPlayer-comp>
나는 그것이 작동하고 ngc가 "... 알려진 요소가 아닌 ..."에 대해 더 이상 불평하지 않아도 이러한 프레임 워크의 낙타 사건 괴물들로부터이 총체적이지 않은 의미로 화를 냈습니다.
나는 개인적으로취하다모든 것을 똑같이 (클래스, 선택자, 파일 등 ...)
나는 웹을 위해 빌드하는 동안 지연로드로 작업하는 다음으로 되돌아 갔다. (ionic cordova 빌드 브라우저 --prod - release)
사용자 정의 구성 요소 모듈 선언 :
import { NgModule } from '@angular/core';
import { IonicPageModule } from 'ionic-angular';
//
import { MyPlayerComp } from './MyPlayerComp ';
//
@NgModule({
declarations: [MyPlayerComp ],
imports: [IonicPageModule.forChild(MyPlayerComp )],
exports: [MyPlayerComp ],
})
export class MyPlayerCompModule { }
사용자 지정 구성 요소를 사용하려는 모듈에서 다음을 사용하십시오.
import { NgModule } from '@angular/core';
import { IonicPageModule } from 'ionic-angular';
//
import { PlyrView } from './PlyrView';
//
import { MyPlayerCompModule } from './MyPlayerComp.module' // 20180720
//
@NgModule({
declarations: [PlyrView],
imports: [
IonicPageModule.forChild(PlyrView),
MyPlayerCompModule, // <<<<<
],
exports: [PlyrView],
})
export class PlyrViewModule { }
나는 이것이 누군가를 돕기를 바란다.
이것은 아래의 링크를 따라 그것을 해결하는 방법입니다 :
http://evalogical.com/blog/components-ionic-framework-3
에서 구성 요소 가져 오기home.ts
이런 식으로 파일,
import { MyComponent } from '../../components/my/my';
에서home.module.ts
수입하다ComponentsModule
이렇게 가져 오기에 추가하십시오.
import { NgModule } from '@angular/core';
import { IonicPageModule } from 'ionic-angular';
import { HomePage } from './home';
import { ComponentsModule } from '../../components/components.module';
@NgModule({
declarations: [
HomePage,
],
imports: [
IonicPageModule.forChild(HomePage),
ComponentsModule
],
})
export class HomePageModule {}
에서 IonicPageModule 가져 오기components.module.ts
파일을 가져오고 여기에 가져와야합니다.CUSTOM_ELEMENTS_SCHEMA
이런 스키마에서.
import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { MyComponent } from './my/my';
import { IonicPageModule } from 'ionic-angular';
@NgModule({
declarations: [MyComponent],
imports: [IonicPageModule.forChild(MyComponent)],
exports: [MyComponent],
schemas: [CUSTOM_ELEMENTS_SCHEMA]
})
export class ComponentsModule {}
행 제거
import { HomePage } from '../pages/home/home';
~로부터app.module.ts
파일 대신 다음 줄을 추가하십시오import { HomePageModule } from '../pages/home/home.module';
이제 구성 요소의 선택기를 HTML 태그로 사용할 수 있습니다.home.html
파일