У меня есть приложение с угловым 1, которое я выполнил по инструкциям из официального уральского учебника (https://angular.io/docs/ts/latest/guide/upgrade.html) для начальной загрузки гибридного приложения 1 + 2. У меня есть весь код на месте и запускаю приложение, и абсолютно ничего не происходит. Он просто подходит к корневому URL-адресу, и я получаю только стиль и представление о том, что есть в index.html
. Однако основной <div ng-view>
никогда не обновляется через $routeProvider
и app.ts
. По крайней мере, похоже, это то, что происходит. Есть zero ошибок. Вот то, что я до сих пор:Загрузочный Угловой 2 + Угловой 1 Гибридное приложение не загружается при использовании downgradeComponent
main.ts (загружается через SystemJS)
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { UpgradeModule } from '@angular/upgrade/static';
import { AppModule } from './app.module';
platformBrowserDynamic().bootstrapModule(AppModule).then(platformRef => {
const upgrade = platformRef.injector.get(UpgradeModule) as UpgradeModule;
upgrade.bootstrap(document.body, ['MyA1App']);
});
Одно примечание для приведенного выше кода гибридного бутстраповской - это является работает, насколько я могу судить. Если я изменил имя приложения Angular1 на blahblah
, я получаю целую кучу ошибок в браузере. Этот код может найти MyA1App
Модуль Angular1, определенный в app.ts
и способный загружать его.
index.html:
<div class="main-content" ng-view=""></div>
<!-- Configure SystemJS (bootstrap Angular 2 app) -->
<script src="systemjs.config.js"></script>
<script>
System.import('app').catch(function(err){ console.error(err); });
</script>
<!-- Old Angular 1 bootstrap method -->
<!--<script>
angular.bootstrap(document.body, ['MyA1App']);
</script>-->
app.module.ts
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { UpgradeModule } from '@angular/upgrade/static'; //To bootstrap a hybrid application, we need to import UpgradeModule in our AppModule, and override it's bootstrap method:
@NgModule({
imports: [BrowserModule, UpgradeModule ],
})
export class AppModule {
ngDoBootstrap() {}
}
import { downgradeComponent } from '@angular/upgrade/static';
angular.module('MyA1App', [])
.directive(
'contactList',
downgradeComponent({ component: ContactListComponent }) as angular.IDirectiveFactory
);
app.ts (от углового 1, который определяет модуль и маршрутизации - это должно все еще находятся в игре и используются)
module MyApp {
'use strict';
export var App: ng.IModule = angular.module('MyA1App', ['ngRoute', 'ngResource', 'highcharts-ng', 'ui.bootstrap']);
// register work which needs to be performed on module loading
App.config([
'$routeProvider', '$httpProvider',
($routeProvider: ng.route.IRouteProvider, $httpProvider: ng.IHttpProvider) => {
$routeProvider
.when('/landing',
{
controller: MyApp.Controllers.LandingCtrl,
templateUrl: '/app/angular1x/partials/landing.html'
})
.when('/registration',
{
controller: MyApp.Controllers.RegistrationCtrl,
controllerAs: 'vm',
templateUrl: '/app/angular1x/partials/registration.html'
})
.otherwise({
redirectTo: '/landing'
});
}
]);
}
Так вот обзор вопроса:
- Bootstraping к Angular2
main.ts
черезsystemjs
называется вindex.html
(появляется успешно - без ошибок) - можно разместить точки останова в контроллерах Angular1, посадку и т.д., и увидеть определяемые и загружаемые контроллеры. Но больше ничего не происходит! Ошибок нет.
- Директива
ng-view
никогда не обновляется с помощью маршрутизации. После проверки на главной странице это выглядит как:<div class="main-content" ng-view=""></div>
- Нет JS ошибки в любом месте
- Если я иду назад и использовать оригинальный A1 самозагрузки в
index.html
он работает в отличие от использованияsystemjs
для загрузки A2 и самонастройки A1 как гибрид ,
Что я делаю неправильно здесь, так что оригинальное приложение Angular1
выглядит загружаемым и загрузочным, но на самом деле ничего не делает?
UPDATE:
Я разыскал вредоносный код, чтобы быть следующее app.module.ts
:
import { downgradeComponent } from '@angular/upgrade/static';
angular.module('MyA1App', [])
.directive(
'contactList',
downgradeComponent({ component: ContactListComponent }) as angular.IDirectiveFactory
);
Это не было маршрутизации (это была красная сельдь). Все приложение Angular1
загрузится и загрузится, если я удалю код выше. Что я делаю в коде выше, что может привести к остановке загрузки, но не создать никаких ошибок JavaScript
?