Angulaire 2 routeur sans base href ensemble
J'obtiens une erreur et ne peut pas trouver pourquoi. Voici le message d'erreur:
EXCEPTION: Error during instantiation of LocationStrategy! (RouterOutlet -> Router -> Location -> LocationStrategy).
angular2.dev.js:23514 EXCEPTION: Error during instantiation of LocationStrategy! (RouterOutlet -> Router -> Location -> LocationStrategy).BrowserDomAdapter.logError @ angular2.dev.js:23514BrowserDomAdapter.logGroup @ angular2.dev.js:23525ExceptionHandler.call @ angular2.dev.js:1145(anonymous function) @ angular2.dev.js:14801NgZone._notifyOnError @ angular2.dev.js:5796collection_1.StringMapWrapper.merge.onError @ angular2.dev.js:5700run @ angular2-polyfills.js:141(anonymous function) @ angular2.dev.js:5719zoneBoundFn @ angular2-polyfills.js:111lib$es6$promise$$internal$$tryCatch @ angular2-polyfills.js:1511lib$es6$promise$$internal$$invokeCallback @ angular2-polyfills.js:1523lib$es6$promise$$internal$$publish @ angular2-polyfills.js:1494(anonymous function) @ angular2-polyfills.js:243microtask @ angular2.dev.js:5751run @ angular2-polyfills.js:138(anonymous function) @ angular2.dev.js:5719zoneBoundFn @ angular2-polyfills.js:111lib$es6$promise$asap$$flush @ angular2-polyfills.js:1305
angular2.dev.js:23514 ORIGINAL EXCEPTION: No base href set. Please provide a value for the APP_BASE_HREF token or add a base element to the document.BrowserDomAdapter.logError @ angular2.dev.js:23514ExceptionHandler.call @ angular2.dev.js:1154(anonymous function) @ angular2.dev.js:14801NgZone._notifyOnError @ angular2.dev.js:5796collection_1.StringMapWrapper.merge.onError @ angular2.dev.js:5700run @ angular2-polyfills.js:141(anonymous function) @ angular2.dev.js:5719zoneBoundFn @ angular2-polyfills.js:111lib$es6$promise$$internal$$tryCatch @ angular2-polyfills.js:1511lib$es6$promise$$internal$$invokeCallback @ angular2-polyfills.js:1523lib$es6$promise$$internal$$publish @ angular2-polyfills.js:1494(anonymous function) @ angular2-polyfills.js:243microtask @ angular2.dev.js:5751run @ angular2-polyfills.js:138(anonymous function) @ angular2.dev.js:5719zoneBoundFn @ angular2-polyfills.js:111lib$es6$promise$asap$$flush @ angular2-polyfills.js:1305
angular2.dev.js:23514 ORIGINAL STACKTRACE:BrowserDomAdapter.logError @ angular2.dev.js:23514ExceptionHandler.call @ angular2.dev.js:1157(anonymous function) @ angular2.dev.js:14801NgZone._notifyOnError @ angular2.dev.js:5796collection_1.StringMapWrapper.merge.onError @ angular2.dev.js:5700run @ angular2-polyfills.js:141(anonymous function) @ angular2.dev.js:5719zoneBoundFn @ angular2-polyfills.js:111lib$es6$promise$$internal$$tryCatch @ angular2-polyfills.js:1511lib$es6$promise$$internal$$invokeCallback @ angular2-polyfills.js:1523lib$es6$promise$$internal$$publish @ angular2-polyfills.js:1494(anonymous function) @ angular2-polyfills.js:243microtask @ angular2.dev.js:5751run @ angular2-polyfills.js:138(anonymous function) @ angular2.dev.js:5719zoneBoundFn @ angular2-polyfills.js:111lib$es6$promise$asap$$flush @ angular2-polyfills.js:1305
angular2.dev.js:23514 Error: No base href set. Please provide a value for the APP_BASE_HREF token or add a base element to the document.
at new BaseException (angular2.dev.js:8080)
at new PathLocationStrategy (router.dev.js:1203)
at angular2.dev.js:1380
at Injector._instantiate (angular2.dev.js:11923)
at Injector._instantiateProvider (angular2.dev.js:11859)
at Injector._new (angular2.dev.js:11849)
at InjectorDynamicStrategy.getObjByKeyId (angular2.dev.js:11733)
at Injector._getByKeyDefault (angular2.dev.js:12048)
at Injector._getByKey (angular2.dev.js:12002)
at Injector._getByDependency (angular2.dev.js:11990)
Personne ne sait pourquoi le routeur est en train de lancer ce? Je suis à l'aide de angular2 bêta
voici mon code:
import {Component} from 'angular2/core';
import { RouteConfig, ROUTER_DIRECTIVES } from 'angular2/router';
import {LoginComponent} from './pages/login/login.component';
import {DashboardComponent} from './pages/dashboard/dashboard.component';
@Component({
selector: 'app',
directives:[ROUTER_DIRECTIVES],
template:`
<div class="wrapper">
<router-outlet></router-outlet>
</div>`
})
@RouteConfig([
{ path: '/',redirectTo: '/dashboard' },
{ path: '/login',name:'login',component: LoginComponent },
{ path: '/dashboard',name:'dashboard',component: DashboardComponent,}
])
export class AppComponent {
}
Vous devez vous connecter pour publier un commentaire.
https://angular.io/docs/ts/latest/guide/router.html
La
<base href="/">
raconte l'angle de routeur ce qui est de la partie statique de l'URL. Le routeur puis modifie seulement la partie restante de l'URL.Sinon ajouter
>= Angular2 RC.6
dans votre fichier d'amorçage.
Dans les anciennes versions les importations devait être comme
< Angular2 RC.6
< RC.0
< bêta.17
>= beta.17
Voir aussi Localisation et HashLocationStrategy cessé de fonctionner en version bêta.16
bootstrap(AppComponent, [ROUTER_PROVIDERS, provide(APP_BASE_HREF, {useValue : '/'})]);
import {provide} from 'angular2/core';
pour être en mesure d'utiliser les fournir.import {APP_BASE_HREF} from 'angular2/router';
/
est commun, pour certains cas, il peut avoir besoin d'un chemin d'accès différent.http://example.org/somesub/index.html
ou similaire, vous avez besoin d'un autre chemin commebase="/somesub"
<base href="/" />
a été définie dans le fichier (pour"/"
,"./"
,"#"
ou tout autre chemin d'accès de base, peu importe la façon dont les chemins de l'image d'eux-mêmes ont été spécifiés dans le modèle). La seule solution qui a finalement travaillé était d'utiliserAPP_BASE_HREF
à la place. Une vraie vie!<base>
également être configuré avecAPP_BASE_HREF
APP_BASE_HREF
doit l'emporter sur les<base href="...">
.APP_BASE_HREF
ne pas affecter d'autres domaines où<base href="...">
a un effet, comme SVG refs ou similaire.APP_BASE_HREF
n'est utilisé que par Angulaire de code comme le routeur ou certains de code personnalisé qui pourrait injecterAPP_BASE_HREF
. Peut-être que vous vous attendez à avoir un certain effet, il n'est pas censé avoir?--base-href ...
, mais qui ne semble pas être liée àAPP_BASE_HREF
, seulement pour<base href="...">
*.spec.ts
fichier de test. Il est toujours nécessaire de construire un environnement d'exécution..spec.ts
tout en utilisantLocation
. - Je ajouter de laRouterTestingModule
et l'erreur disparaîtJ'ai eu étaient confrontés au même problème avec Angular4 et de Jasmin tests unitaires; donnée ci-dessous la solution a fonctionné pour moi
Ajouter ci-dessous les instruction d'importation
Ajouter de la déclaration ci-dessous pour la configuration du Banc d'essai:
Vous pouvez également utiliser hachage basée sur la navigation en incluant les éléments suivants dans l'app.le module.ts
et par adjonction, à la @NgModule({ ... })
“HashLocationStrategy—Un signe dièse (#) est ajouté à l'URL et l'URL segment après le hachage identifie de manière unique la route pour être utilisé comme une page web fragment. Cette stratégie fonctionne avec tous les navigateurs, y compris les anciens.”
Extrait De: Yakov Fain Anton Moiseev. “Angulaire 2 Développement avec des caractères d'imprimerie.”
Depuis la version 2.0 beta 🙂
Angulaire 4 vous pouvez résoudre ce problème en mettant à jour app.le module.ts fichier comme suit:
Ajouter instruction d'importation en haut comme ci-dessous:
Et ajouter en dessous de la ligne à l'intérieur de
@NgModule
Reff: https://angular.io/api/common/APP_BASE_HREF
c'est juste que ajouter le code ci-dessous dans le index.html balise head
qui a travaillé comme un charme pour moi.
Vérifier votre index.html.
Si vous avez accidentellement supprimé la partie suivante, l'inclure et il sera bien