【问题标题】:NativeScript cannot find Angular componentsNativeScript 找不到 Angular 组件
【发布时间】:2018-07-05 20:02:35
【问题描述】:

我刚开始使用 Angular 和 NativeScript,在我的一生中,我无法弄清楚为什么我无法让我的组件引用工作。

首先,我生成初始文件:tns create Test --ng

接下来我创建以下文件结构

App_Resource
components
---app
------app.component.ts
---create
------create.component.ts
------create.component.html
app.module.ts
app.routing.ts
main.ts

这是 app.component.ts

import { Component } from "@angular/core";
import { Router } from "@angular/router";
@Component({
    selector: "my-app",
    template: "<page-router-outlet></page-router-outlet>"
})
export class AppComponent { }

这是 create.component.ts

import { Component } from "@angular/core";
import { Location } from "@angular/common";
import { Router } from "@angular/router";
import * as AppSettings from "application-settings";
@Component({
    selector: "create",
    templateUrl: "./components/create/create.component.html",
})
export class CreateComponent { //... }

这是 app.module.ts

import { NgModule, NO_ERRORS_SCHEMA } from "@angular/core";
import { NativeScriptModule } from "nativescript-angular/nativescript.module";
import { AppRoutingModule } from "./app.routing";
import { AppComponent } from "./compontents/app/app.component";
import { CreateComponent } from "./compontents/create/create.component"
@NgModule({
bootstrap: [
    AppComponent
],
imports: [
    NativeScriptModule,
    AppRoutingModule
],
declarations: [
    AppComponent,
    CreateComponent
],
providers: [

],
schemas: [
    NO_ERRORS_SCHEMA
]
})

这是 app.routing.ts

import { NgModule } from "@angular/core";
import { NativeScriptRouterModule } from "nativescript-angular/router";
import { Routes } from "@angular/router";
import { CreateComponent } from "./compontents/create/create.component"
const routes: Routes = [
    { path: "", redirectTo: "/compontents", pathMatch: "full" },
    { path: "create", component: CreateComponent }
];
@NgModule({
    imports: [NativeScriptRouterModule.forRoot(routes)],
    exports: [NativeScriptRouterModule]
})
export class AppRoutingModule { }

这是 ma​​in.ts

import { platformNativeScriptDynamic } from "nativescript-angular/platform";
import { AppModule } from "./app.module";
platformNativeScriptDynamic().bootstrapModule(AppModule);

问题

当我执行 tns run android 时,我收到以下错误消息:

Error: Could not resolve components/create/create.component.html. 
Looked for: /data/data/org.nativescript.AngularTag/files/app/components/create/create.component.html

从错误中,它似乎在错误的文件夹中查找组件,但是,我不确定为什么。

【问题讨论】:

    标签: angular nativescript angular2-nativescript


    【解决方案1】:

    在您的组件声明中包含 moduleId: module.id,然后删除您的 templateUrl 的完整路径(样式表也是如此)。

    例如,您的创建组件应该是。

    @Component({
        moduleId: module.id,
        selector: "create",
        templateUrl: "./create.component.html",
    })
    

    【讨论】:

    • 已更改,但现在我收到以下消息:[错误错误:未捕获(承诺):错误:无法匹配任何路由。 URL 段:“组件”JS:错误:无法匹配任何路由。 URL 段:'组件']
    • 在您的路由中,您将重定向到“组件”,但没有组件路由器。尝试将其更改为: const routes: Routes = [ { path: "", redirectTo: "/create", pathMatch: "full" }, { path: "create", component: CreateComponent } ];
    • 问题是,我有超过 1 个组件 - 我正在尝试用更多结构重新创建这个示例 (github.com/NativeScript/template-hello-world-ng)。在 [items] 文件夹中,有 2 个组件 - [item-details] 和 [item],我想将此文件夹重命名为 [components] 并将两个命名组件放入各自的文件夹中。
    • 这样就可以了,你只需要更新导入路径。应用程序文件结构对路由没有影响。
    • 我缺少的另一件事(或者是我?)是在 app.module.ts 引导集合中包含组件名称。
    猜你喜欢
    • 1970-01-01
    • 2018-06-09
    • 2017-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多