Angular2如何独立于html基本URL设置应用程序根路径

jda*_*era 7 typo3 angular2-router3 angular

我正在构建一个angular2应用程序/小部件,它将作为插件嵌入到TYPO3中,可插入任何内容页面.这意味着它可能最终会出现在不同的根路径上,例如:

/page1/app
/page/subpage/subpage/whatever
Run Code Online (Sandbox Code Playgroud)

全局基本URL(base href = ..)已由TYPO3设置,无法更改.如何为某些根前缀赋予角度,以便它可以正确构建其路由?

我正在使用这里记录的新路由器:https://angular.io/docs/ts/latest/guide/router.html

jda*_*era 14

实际上,角度文档中有一个解决方案,但很难找到.可以在不使用<base>标记的情况下将基本URL设置为角度.
因此,您只需使用流体将基本URL设置为全局JavaScript变量,然后在app模块中将其设置为angular.

流体:

<script>
   var app_base_url = '<f:uri.page pageUid="{currentPageUid}" />';
</script>
Run Code Online (Sandbox Code Playgroud)

角度:

declare var app_base_url;

import {Component, NgModule} from '@angular/core';
import {APP_BASE_HREF} from '@angular/common';
@NgModule({
  providers: [{provide: APP_BASE_HREF, useValue:app_base_url}]
})
class AppModule {}
Run Code Online (Sandbox Code Playgroud)

https://angular.io/docs/ts/latest/api/common/index/APP_BASE_HREF-let.html

  • 另外,在构建时更适合使用关键“--base-href”,例如:“ng build --base-href=/myapp” (3认同)