我用这个tutorial用GoLang,Angular2和Dart创建一个Web应用程序,但是当我通过控制台命令'backend'开始后端,并在浏览器中路由到“localhost:8080 /”时它必须调用方法来自Dart的类“Hello”,但它没有调用,我得到404错误。我从教程中得到的所有代码并没有改变任何东西。我找不到任何其他教程。你能解释一下我的错误吗?
GoLang代码:
func main() {
http.Handle("/", http.FileServer(http.Dir("./app/web/")))
fmt.Println("Text")
http.HandleFunc("/api/hello", helloWorld)
http.ListenAndServe(":8080", nil)
}
func helloWorld(w http.ResponseWriter, r *http.Request) {
data := struct {
Message string
}{
"Hello, World",
}
if err := json.NewEncoder(w).Encode(data); err != nil {
log.Println(err)
}
}
和角度飞镖代码:
class AppComponent {
Hello hello = new Hello();
}
class Hello{
String message;
Hello(){
HttpRequest.getString('/api/hello')
.then((String content) {
Map parsedMap = JSON.decode(content);
message = parsedMap["Message"];
})
.catchError((Error error) {
print(error.toString());
});
}
}
答案 0 :(得分:1)
教程很老了。您需要切换到HashLocationStrategy
(据我所知,这是默认值)。
请参阅https://angular.io/docs/ts/latest/api/router/HashLocationStrategy-class.html
更改
bootstrap(AppComponent);
到
bootstrap(AppComponent, [
ROUTER_PROVIDERS,
provide(LocationStrategy, {useClass: HashLocationStrategy})
]);
您还需要添加一些额外的导入
import 'package:angular2/router.dart'
show
HashLocationStrategy,
LocationStrategy,
ROUTER_PROVIDERS;