2

私はこれを持っています...

 this.router.navigate(['search', this.searchParameters]);

これは、「/search;text=test;dateFrom=12-10-2016」のようなものを生成します

それはうまくいきます!

ただし...ブラウザを更新するか、URLアドレスバーでEnterキーを押すと、404が表示されます...

取得できません /search;text=test;dateFrom=12-10-2016

angular 2 ベータ版を使用すると、ベータ版は ?text=test&dateFrom=12-10-2016 のような標準のクエリ文字列形式を使用していたため、以前は機能していました。

現在、最終的な Angular 2 は URL から取得したパラメーターを処理するために Url Matrix Notation を使用しています。

これを機能させる方法についての手がかりはありますか?

それが役立つかどうかはわかりませんが、これは私の app.routing.ts です

import { ModuleWithProviders }  from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { HomeComponent }      from './components/pages/home/home.component';
import { SearchComponent }      from './components/pages/search/search.component';
const appRoutes: Routes = [
{
path: '',
redirectTo: '/home',
pathMatch: 'full'
},
{
path: 'search',
component: SearchComponent
}
];

const ルーティングのエクスポート: ModuleWithProviders = RouterModule.forRoot(appRoutes);

また、私はこれをgulp/browserSyncに持っています...

browserSync.init({
   server: {
        baseDir: "./",
        routes: {
            "/home": "index.html",
            "/search": "index.html"
        }
    }
});
4

3 に答える 3

0

Isaac は、状況を解決する方法についていくつかの手がかりを教えてくれました。だから、これはトリックを行うことができます。

browserSync.init({
   server: {
        baseDir: "./",
        routes: {
            "/home": "index.html",
            "/search": "index.html"
        },
        middleware: function(req, res, next) {
            req.url = req.url.replace(';','?');
            req.url = req.url.replace(/;/g,'&');
            return next();
        }
    }
});
于 2016-10-12T18:55:23.420 に答える
0

これを試すことができます...これは私にとってはうまくいきます.唯一の変更はURLだと思います...この方法では、URLはhttps://yoururl.com/#/page

https://stackoverflow.com/a/39103122

于 2016-10-14T18:31:43.740 に答える
-1

Angular2 (または実際には任意の SPA) ルーティングを使用する場合、ANY ルートでインデックス ファイルを返す必要があります。サーバーの種類が異なる場合、これには別のソリューションが必要になります。BrowserSync にはこのための機能が組み込まれていないようですが、ここにリストされているいくつかの優れたソリューションがあります。実装するのが最も簡単だったのは、おそらく

var fs = require("fs"),
    path = require("path"),
    url = require("url"),
    gulp = require("gulp"),
    browserSync = require("browser-sync");

// The default file if the file/path is not found
var defaultFile = "index.html"

// I had to resolve to the previous folder, because this task lives inside a ./tasks folder
// If that's not your case, just use `__dirname`
var folder = path.resolve(__dirname, "../");

browserSync({
        files: ["./css/*.css", "./js/*.js", "./index.html"],
        server: {
            baseDir: "./",
            middleware: function(req, res, next) {
                var fileName = url.parse(req.url);
                fileName = fileName.href.split(fileName.search).join("");
                var fileExists = fs.existsSync(folder + fileName);
                if (!fileExists && fileName.indexOf("browser-sync-client") < 0) {
                    req.url = "/" + defaultFile;
                }
                return next();
            }
        }
    });
于 2016-10-12T15:54:19.297 に答える