无法使用dart和angular2客户端运行GolLang后端

时间:2016-03-08 13:17:17

标签: go dart angular

我用这个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());
        });
  }
}

和项目结构:enter image description here

1 个答案:

答案 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;