1
私はngUpgradeを使用していますが、ng2とng1の間のルーティングの処理方法はわかりません。私がng2コンポーネントに入っている場合、どのようにng1コントローラにルーティングしますか?およびその逆。ngUpgrade - ng2からng1へのルーティング - 方法
私はng1にui-routerを使用しています。 ng2の場合、私は角チームでルータを使用しています。
ありがとうございます!
私はngUpgradeを使用していますが、ng2とng1の間のルーティングの処理方法はわかりません。私がng2コンポーネントに入っている場合、どのようにng1コントローラにルーティングしますか?およびその逆。ngUpgrade - ng2からng1へのルーティング - 方法
私はng1にui-routerを使用しています。 ng2の場合、私は角チームでルータを使用しています。
ありがとうございます!
まず、Angular 1.xと2.xの両方のアプリで、通常の経路を定義しておく必要があります。
app.config(function($routeProvider) {
$routeProvider
// route for the home page
.when('/', {
templateUrl : 'pages/home.html',
controller : 'mainController'
})
// route for the about page
.when('/about', {
templateUrl : 'pages/about.html',
controller : 'aboutController'
})
// route for the contact page
.when('/contact', {
templateUrl : 'pages/contact.html',
controller : 'contactController'
});
});
と角2 Module
中:
Module.config(($routeProvider) => {
$routeProvider
.when('/user/:id', {template : '<user-details></userdetails>'})
.when('/users', {template : '<user-list></userlist>'});
});
あなたはNg1Ng2UrlHandlingStrategy
というクラスを作成し、そこにそれらの間のあなたのルートをdevideことができます。
class Ng1Ng2UrlHandlingStrategy implements UrlHandlingStrategy {
shouldProcessUrl(url) { return url.toString().startsWith("/home") || url.toString().startsWith("/aboute") || url.toString().startsWith("/contact"); }
extract(url) { return url; }
merge(url, whole) { return url; }
}
そして、あなたの主成分で:
providers: [
// Providing a custom url handling strategy to tell the Angular 2 router
// which routes it is responsible for.
{ provide: UrlHandlingStrategy, useClass: Ng1Ng2UrlHandlingStrategy }
]
最後に、root
コンポーネントをAngular 2ルーターのコンセントを含むように更新します。
@Component({
selector: 'root-cmp',
template: `
<router-outlet></router-outlet>
<div class="ng-view"></div>
`,
})
export class RootCmp {}
有益な回答ありがとうございました。欠落している部分があります。ng2からng1に状態を転送するにはどうすればよいですか?私はng2コンポーネントの "$ state.go"式を探しています。 – einav
これは要点です。すべてのルートはng2によって処理され、そのクラスはどのパスを処理するかを決定します。shouldProcessUrlのロジックを見てください。 – Yaser
私のshouldProcessUrlは常に '/'で呼び出されます私が入れたURL) – Kesty