我不是很了解,当我使用以下命令ionic g page contact
创建一个带有Ionic 3的简单页面时,我究竟要在哪里链接文件和页面?
仅在带有此行的src / app / app.module.ts上?
import { ContactPage } from '../pages/contact/contact';
为什么我需要在providers
和declarations
上推送它?我必须为我的应用程序所有页面执行此操作吗?
如果我想创建一个指向此页面的链接,我还必须在主页的打字稿文件中导入它?
由于
答案 0 :(得分:2)
使用
创建页面时 ionic g page testpage
首先我们需要在app.module.ts
文件
import { TestpagePage } from '../pages/testpage/testpage';
并在declarations
数组和entryComponents
数组
declarations: [
MyApp,
HomePage,
ListPage,
TestpagePage
],
entryComponents: [
MyApp,
HomePage,
ListPage,
TestpagePage
],
我们无需将其推入providers
数组。例如,如果您想从主页导航到此页面,那么
- >导入home.ts
文件中的测试页
import { TestpagePage } from '../testpage/testpage';
和按钮点击事件,
this.navCtrl.push(TestpagePage);
声明: 在声明部分,我们需要包含我们创建的所有组件和指令。如果我们不在此处包含它们,当我们尝试使用它们时我们会收到错误,因为Angular不能够在我们的代码中认出它们。
<强> entryComponents 强>: 在entryComponents部分中,我们定义了仅由其类型加载的任何组件。所有Page组件都是这种情况,因为这些都是 通过导航控制器加载。
以声明方式加载的组件(即在另一个组件的模板中引用)不需要包含在entryComponents数组中。 因此,您可以看到我们有一些重复,我们必须在声明和entryComponents部分中定义我们的Page组件。 拥有这个单独的entryComponents部分的原因是Angular可以为仅包含组件的应用程序编译包 实际上在应用程序中使用。
<强>提供商强>:
在providers部分,我们可以注册依赖注入服务。在App Module中注册服务时,可以在所有应用程序中使用它
您应用中的组件。
但是,我们不需要在此处包含我们的所有服务,我们也可以决定仅为其@Component
中的特定组件注册服务
装饰器。
答案 1 :(得分:1)
我们每次创建页面时都不需要将页面导入app.module.ts
,这是反DRY
,无聊和app.module.ts
变胖
使用新的离子cli,我们可以生成如下页面:
ionic generate page pagename
这将生成页面以及相应的模块pagename.module.ts
。然后,您可以在STRING
中按名称从任何其他页面引用它。例如:
this.navCtrl.push("pagename");