如何在现有nodejs应用程序中仅在特定页面中使用angular 2

如何在现有nodejs应用程序中仅在特定页面中使用angular 2,angular,Angular,我有一个大型web应用程序,它已经使用Nodejs开发。 我正在使用angular 2向应用程序添加功能,并在现有的ejs页面中使用这些功能 一个这样的例子是。 当我加载包含angular2组件的页面时,我不会得到任何错误,但应用程序的其余部分在控制台中抛出错误,但很早就可以正常工作 我在控制台中得到的错误如下所示 选择器“project details”与任何元素都不匹配 最好的做法是只在需要的页面中包含angular2模块,并避免从其他页面获取此错误 我使用angular2最新版本的网页包

我有一个大型web应用程序,它已经使用Nodejs开发。 我正在使用angular 2向应用程序添加功能,并在现有的ejs页面中使用这些功能

一个这样的例子是
。 当我加载包含angular2组件的页面时,我不会得到任何错误,但应用程序的其余部分在控制台中抛出错误,但很早就可以正常工作

我在控制台中得到的错误如下所示

选择器“project details”与任何元素都不匹配

最好的做法是只在需要的页面中包含angular2模块,并避免从其他页面获取此错误

我使用angular2最新版本的网页包

更新1: 所有组件都正确呈现,在我需要包含它们的页面上工作良好。 我只想在不需要角度组件的页面上消除这个错误,即:没有

main.ts:

import "core-js";
import "reflect-metadata";
import "zone.js/dist/zone"

import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { ProjectModule } from './project/project.module';

platformBrowserDynamic().bootstrapModule(ProjectModule);
project.module.ts:

// core 
import { NgModule } from '@angular/core';
import { CommonModule }  from '@angular/common';
import { FormsModule } from '@angular/forms';
import { BrowserModule }  from '@angular/platform-browser';
import { HttpModule } from '@angular/http';
import { ProjectComponent } from './project.component';
import { ProjectService } from './project.service';

@NgModule({
  imports: [
    CommonModule, 
    BrowserModule, 
    HttpModule, 
    FormsModule
  ],
  declarations: [
    ProjectComponent
  ],
  bootstrap: [ 
    ProjectComponent 
  ],
  providers : [
    ProjectService
  ]
})

export class ProjectModule { }
project.component.ts:

import { Component } from '@angular/core';
import { Project } from './project.model';
import { ProjectService } from './project.service';

@Component({
  selector: 'project-details',
  templateUrl: '/app/project.component.html'
})
export class ProjectComponent {

  constructor(private  projectService: ProjectService){

  }
}
footer.ejs:

<script src="/app/dist/bundle.js"></script>

注意:此设置已正常运行,没有任何问题。
我只想在我不需要角度组件的页面上消除这个错误,即:没有
的页面和有其他角度组件的页面

您的错误意味着没有带有选择器的组件项目详细信息

可能的原因

  • 该选择器不存在任何组件
  • 可能是打字错误
  • 该组件可能不是该模块的一部分
  • 组件可能不在模块中的声明中
  • 需要更多信息来提供准确的修复

    更新: 正如在TeamViewer中修复的,我正在更新帖子

  • 在使用angular2的页面中包含脚本bundle.js 不在所有页面中的组件与页脚中的组件相同
  • 在模块中添加自定义元素\u模式,如下所示

    import{ CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'
    @NgModule({
          declarations: [ ... ],
          exports: [ ... ],
          imports: [ ... ],
          schemas: [ CUSTOM_ELEMENTS_SCHEMA ]
    })
    

  • 您的错误意味着没有具有选择器项目详细信息的组件

    可能的原因

  • 该选择器不存在任何组件
  • 可能是打字错误
  • 该组件可能不是该模块的一部分
  • 组件可能不在模块中的声明中
  • 需要更多信息来提供准确的修复

    更新: 正如在TeamViewer中修复的,我正在更新帖子

  • 在使用angular2的页面中包含脚本bundle.js 不在所有页面中的组件与页脚中的组件相同
  • 在模块中添加自定义元素\u模式,如下所示

    import{ CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'
    @NgModule({
          declarations: [ ... ],
          exports: [ ... ],
          imports: [ ... ],
          schemas: [ CUSTOM_ELEMENTS_SCHEMA ]
    })
    

  • 对于angular2,所有组件(包括页面和自定义标记)和过滤器(管道)都在app.module.ts中定义

    @NgModule({
      declarations: [
        AppComponent,
        ProjectDetails,
       SomeFilter,SomeComponent,
      ],
      imports: [
        BrowserModule,
        FormsModule,
        HttpModule
      ],
      providers: [HttpModule, Core],
      bootstrap: [AppComponent]
    })
    
    如果您有一个组件
    项目详细信息
    ,它将成为页面的一部分,那么它的ts类必须添加到
    @NgModule
    声明中

    关于
    project details
    ts文件本身
    project details.component.ts
    ,它必须将选择器定义为注释

    比如说

    @Component({
    
      selector: 'project-details',
      templateUrl: 'project-details.component.html',
      styleUrls: ['project-details.component.css'],
    })
    export class PRojectDetails {
    ...
    }
    

    对于angular2,所有组件(包括页面和自定义标记)和过滤器(管道)都在app.module.ts中定义

    @NgModule({
      declarations: [
        AppComponent,
        ProjectDetails,
       SomeFilter,SomeComponent,
      ],
      imports: [
        BrowserModule,
        FormsModule,
        HttpModule
      ],
      providers: [HttpModule, Core],
      bootstrap: [AppComponent]
    })
    
    如果您有一个组件
    项目详细信息
    ,它将成为页面的一部分,那么它的ts类必须添加到
    @NgModule
    声明中

    关于
    project details
    ts文件本身
    project details.component.ts
    ,它必须将选择器定义为注释

    比如说

    @Component({
    
      selector: 'project-details',
      templateUrl: 'project-details.component.html',
      styleUrls: ['project-details.component.css'],
    })
    export class PRojectDetails {
    ...
    }
    

    编辑:所有组件都正确呈现,在我需要包含它们的页面上工作良好。我只想在我不需要角组件的页面上消除这个错误,例如:没有感谢的页面,我从你的答案列表中找到了一些相关的有用的答案。@sith请在相应的帖子中提及。很高兴帮助您编辑:所有组件都正确呈现,在我需要包含它们的页面上工作良好。我只想在我不需要角组件的页面上消除这个错误,例如:没有感谢的页面,我从你的答案列表中找到了一些相关的有用的答案。@sith请在相应的帖子中提及。很高兴能帮助你我有准确的设置。编辑:所有组件都正确呈现,在我需要包含它们的页面上工作良好。我只想在我不需要角度组件的页面上消除这个错误,例如:没有标记的页面我有精确的设置。编辑:所有组件都正确呈现,在我需要包含它们的页面上工作良好。我只想在我不需要角度组件的页面上消除这个错误,例如:没有标记的页面请分享我们可以查看代码的最小工作示例。您在哪里声明这个组件?您似乎没有在应用程序的某个模块中正确声明它。你有不止一个模块吗?我声明正确,工作正常。如何从我实际上不需要角度组件的页面中删除“选择器”项目详细信息“不匹配任何元素”。如何处理
    ProjectComponent\u Host
    ?HTML是否在不同组件之间共享?请共享我们可以查看的最小工作示例代码。您在哪里声明此组件?您似乎没有在应用程序的某个模块中正确声明它。你有不止一个模块吗?我声明正确,工作正常。如何从我实际上不需要角度组件的页面中删除“选择器”项目详细信息“不匹配任何元素”。如何处理
    ProjectComponent\u Host
    ?HTML是否在不同组件之间共享?。