【问题标题】:Angular using a template path to an html fileAngular 使用 html 文件的模板路径
【发布时间】:2017-11-15 18:41:03
【问题描述】:

试图更好地理解@component 选择器和模板,以将我的路由指向一个 html 文件。尝试简单地指向 html 文件时出现错误,即使我的 index.ts 文件中似乎有我需要的内容。我得到的错误是:

查看涉及的文件,我不确定出了什么问题。这是我的 user.component.ts:

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

@Component({
  selector: 'users',
  template: require('./components/userMgmt/inviteUser.html')
})
export class userComponent {}

然后我的 index.ts 来自 app 的根目录:

import {NgModule} from '@angular/core';
import {BrowserModule} from '@angular/platform-browser';
import 'jquery';
import 'bootstrap';
import 'font-awesome/css/font-awesome.css';

import {routing, RootComponent} from './routes';
import {AppComponent} from './containers/app';
import {HeaderComponent} from './components/header';
import {userComponent} from './components/userMgmt/user.component';

@NgModule({
  imports: [
    BrowserModule,
    routing
  ],
  declarations: [
    RootComponent,
    AppComponent,
    HeaderComponent,
    userComponent
  ],
  bootstrap: [RootComponent]
})
export class AppModule {}

最后,我的 /src 根目录下的 index.ts:

import 'core-js/client/shim';
import 'zone.js/dist/zone';

import '@angular/common';
import 'rxjs';

import './index.scss';

import {enableProdMode} from '@angular/core';
import {platformBrowserDynamic} from '@angular/platform-browser-dynamic';
import {AppModule} from './app';


declare var process: any;
if (process.env.NODE_ENV === 'production') {
  enableProdMode();
} else {
  Error['stackTraceLimit'] = Infinity; // tslint:disable-line:no-string-literal
  require('zone.js/dist/long-stack-trace-zone'); // tslint:disable-line:no-var-requires
}

platformBrowserDynamic().bootstrapModule(AppModule);

我在哪里出错了?我没有看到任何问题。我没有正确使用模板吗?似乎我应该能够注入 html 或添加 html 文件的路径,不是吗?

根据第一个答案,它修复了部分问题,但不明白为什么现在它不了解路径。控制台不再出现错误,但页面未在浏览器中加载。这是错误:

这是我的文件结构的截图:

【问题讨论】:

    标签: javascript angular typescript components angular2-template


    【解决方案1】:

    在@component 中添加moduleID

     @Component({
          selector: 'users',
          moduleId: module.id,
          templateUrl: './inviteUser.html'
     })
    

    【讨论】:

      【解决方案2】:

      查看您的组件文件夹和代码。感觉组件html的路径不对。试试这段代码看看。

      import {Component} from '@angular/core';
      
      @Component({
        selector: 'users',
        templateUrl: './inviteUser.html'
      })
      export class userComponent {}
      

      【讨论】:

      • 谢谢,这有帮助,但不是我控制台中的其他错误,现在开发工具说它找不到。请参阅更新问题中的最后 2 个屏幕截图以了解我所指的内容。
      • 所以如果我添加为绝对 URL,它似乎可以解决。因此,这: templateUrl: 'app/components/userMgmt/inviteUser.html' 工作,但只是一个相对 URL 没有。想法?
      • 我正在研究可能的情况。您正在使用哪个版本的 Angular?您是否使用 angular-cli 来设置项目?我强烈感觉到,配置有问题,但不确定。
      • 尝试将“moduleId: module.id”添加到您的组件装饰器中,但对于最新版本的 Angular 则不是必需的。请参考变更日志:angular.io/guide/change-log
      • 目前使用 2,但很快将其移至 4。所以我现在应该只接受绝对路径,然后再回到这个。
      猜你喜欢
      • 2017-12-07
      • 1970-01-01
      • 1970-01-01
      • 2017-01-12
      • 2016-04-16
      • 1970-01-01
      • 1970-01-01
      • 2018-02-04
      • 1970-01-01
      相关资源
      最近更新 更多