働く我々は(BrowserSyncを使用して)、ブラウザでページを更新することができるようにHashLocationStrategyを使用している候補4.角度2 RC 4 - hashlocationstrategyはもはや
を解放するために、当社の角度2プロジェクトをアップグレードしました。 しかしRC4ではこれはもう機能しません。 ルータアウトレットにコンポーネントがロードされていません。 しかし、メニュー項目のrouterlinkを使用すると動作します。
RC4用のHashLocationStrategyが壊れていますか、それとも正しく使用されていませんか? インターネットに関する情報はまだ見つかりませんでした。 (ちょうど今何が起こっているのかを知るために、Angular2のソースコードを見つけようとしています)
更新:ここにコードがあります。
また、既定のルートを動作させる方法が見つからないようです。 以下に示すように空のパスを試してみましたが、リダイレクトを試しました...デフォルトルートをトリガーしてルートコンセントにコンポーネントをロードするものは何もありません。
// boot:
import {bootstrap} from '@angular/platform-browser-dynamic';
import {AppComponent} from './app.component';
bootstrap(AppComponent)
.catch(err => console.log(err));
// AppComponent:
import {Component, provide, ExceptionHandler} from '@angular/core';
import {HTTP_PROVIDERS, XHRBackend} from '@angular/http';
import {CORE_DIRECTIVES, LocationStrategy, HashLocationStrategy} from '@angular/common';
import {TranslatePipe, TranslateService, TRANSLATE_PROVIDERS} from 'ng2-translate/ng2-translate';
import {SideMenuComponent} from './navigatie/index';
import {AppSettingsService, Auth, MockBackendToggle} from './shared/index';
import {EssStorage} from './shared/ess-storage';
import {EssHttp} from './shared/ess-http';
import {DienstverbandService} from './dienstverband/shared/dienstverband.service';
import {HeaderMenuComponent} from './navigatie/headermenu/headermenu.component';
import {WerknemerService} from './werknemer/werknemer.service';
import {PersoonService} from './werknemer/persoon/shared/persoon.service';
import {RouterOutlet} from '@angular/router';
import {APP_ROUTER_PROVIDER} from './navigatie/routes';
import {AuthGuard} from './shared/auth/auth-guard';
import {EssExceptionHandler} from './shared/ess-exception-handler';
@Component({
selector: 'ess-app',
pipes: [TranslatePipe],
directives: [CORE_DIRECTIVES, SideMenuComponent, HeaderMenuComponent, RouterOutlet],
providers: [TRANSLATE_PROVIDERS, TranslateService, HTTP_PROVIDERS, EssHttp, WerknemerService, APP_ROUTER_PROVIDER, AuthGuard,
AppSettingsService, Auth, DienstverbandService, PersoonService, provide(XHRBackend, {useClass: MockBackendToggle}),
provide(LocationStrategy, {useClass: HashLocationStrategy}), provide(ExceptionHandler, {useClass: EssExceptionHandler})],
template: `
<div id='main'>
<div class='header hidden-xs' *ngIf="_auth !== undefined && _auth.isLoggedIn()">
<header>
<ess-headermenu></ess-headermenu>
</header>
</div>
<div class='ess-sidemenu-container visible-lg' *ngIf="_auth !== undefined && _auth.isLoggedIn()">
<ess-sidemenu></ess-sidemenu>
</div>
<div class='main-content-container col-lg-12'>
<section>
<section id='content'>
<div>
<router-outlet></router-outlet>
</div>
</section>
</section>
</div>
</div>`
})
export class AppComponent { //..}
// routes:
import {provideRouter, RouterConfig} from '@angular/router';
import {DashboardComponent} from '../dashboard/index';
import {PersonaliaComponent} from '../werknemer/index';
import {LoginComponent} from '../login/index';
import {AuthGuard} from '../shared/auth/auth-guard';
export const appRoutes: RouterConfig = [
{path: '', component: LoginComponent},
{path: 'login/:url', component: LoginComponent},
{path: 'dashboard', component: DashboardComponent},
{path: 'personalia', component: PersonaliaComponent, canActivate: [AuthGuard]}
];
export const APP_ROUTER_PROVIDER = provideRouter(appRoutes);
更新:私はリンクをクリックし、[routerLink]を用いてビューに移動すると
、次いでルータ出口が正しい部品で満たされます。例えば、 'auto'にナビゲートするとき。
<li class="submenuitem" [routerLink]="['auto']"><a href="#"><span>{{'AUTO' | translate}}</span></a></li>
しかし、私は、例えば「自動」のページを更新すると、ルータ出口が空になります。
ここで、「HashLocationStrategy」を提供していますか? 'bootstrap'呼び出しでルートコンポーネントの' providers'配列に移動してみてください。 – rinukkusu
私たちのブートストラップコールにはプロバイダがありません。私たちはすべての「グローバル」プロバイダをAppComponentのプロバイダ配列内に持っています。 – Andre
質問にブートストラップコードを追加してください – Siraj