小编Rob*_*Rob的帖子

Angular 4 Component ngOnInit未在每个路径请求上调用

我刚刚开始潜入Angular 1.5来自Angular 1.5.我正在处理用户路由并将API数据从服务中提取到用户组件中.

与1.*中的控制器不同,组件似乎保持静态,在每个请求中刷新它们.

无论如何要在每个新路由请求上调用ngOnInit函数吗?

我的用户组件类:

// url structure: /user/:id
export class UserComponent implements OnInit {

    constructor(private route: ActivatedRoute) {}

    ngOnInit() {

      // doesn't log new id on route change
      let id = this.route.snapshot.params['id'];
      console.log(id);

      this.route.params
        .switchMap(params => this.userService.getUser(params['id']))
        .subscribe(user => {
          // logs new id on route change
          let id = this.route.snapshot.params['id'];
          console.log(id);

          this.user = user
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

更新:

找到了一个我觉得最适合我的方案的解决方案.根据我的问题和进一步调查的几个答案和评论,订阅路线似乎是要走的路.这是我更新的组件:

export class UserComponent {

  user;
  id;

  constructor(
    private userService: UserService,
    private route: ActivatedRoute
  ) {}


  ngOnInit() { …
Run Code Online (Sandbox Code Playgroud)

angular2-routing angular2-components angular

7
推荐指数
1
解决办法
8528
查看次数

PHP PDO错误消息作为要在电子邮件中发送的变量

在PHP中从MySQL切换到PDO.在过去,当一个查询被运行并且由于某种原因没有被执行时,我能够向自己发送一封包含mysql_error()消息的电子邮件,如下所示:

$query = "SELECT dogs FROM animals";
$res = mysql_query($query);

if (!$res) {
    $error = "Error Message: " . mysql_error();
    mail("my@email.com","Database Error",$error);
}
Run Code Online (Sandbox Code Playgroud)

从那时起,当网站上的数据库出现问题时,我会被emil警告.

我的PDO设置如下:

setAttribute(PDO::ATTR_EMULATE_PREPARES,false);
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
Run Code Online (Sandbox Code Playgroud)

我有一个尝试catch在PDO连接本身,但我想得到准备和执行的错误消息,因为它们发生如下:

$query = "SELECT cats FROM animals";
$sql = $pdo->prepare($query);

if (!$sql->execute()) {
  $error = "Error Message: " . (pdo error message here);
  mail("my@email.com","Database Error",$error);
}
Run Code Online (Sandbox Code Playgroud)

有关如何在电子邮件主题中分配PDO错误消息的任何想法?如果准备失败使用errorInfo()但是执行错误(例如数组的无效参数计数),我能够得到一条逻辑错误消息,我似乎无法收到错误消息.

感谢您的帮助.

php mysql error-handling pdo error-reporting

4
推荐指数
1
解决办法
1907
查看次数

AngularJS 1.2在服务中存储数据数组

我有一个问题,寻求建议,如何将存储在服务数组中的数据提供给控制器,因为在1.2中删除了解包承诺.

例:

  1. 路线1包含物品清单
  2. 路由二包含一个表单来添加新项目
  3. 从路线牵引中保存项目后,用户将重定向回路线1.

当路由1初始加载时,服务将向服务器请求项目,将项目存储在服务中的数组中,因此在此之后路由1的每个请求将返回一个数组.保存项目时,该项目被推送到服务中的数组.

如果我在初始加载时等待路由器1的控制器中的承诺,没有问题,因为响应被发回,但是之后路由一个的每个请求都会返回错误,因为我返回了一个数组.

关于如何在1.2中完成这样的事情的任何想法?

app.factory('Items',function($http) {
    var items = [];
    return {
        list: function() {
            if (items.length == 0) {    // items array is empty so populate it and return list from server to controller
                return $http.get('/?items').then(function(response) {
                    items = response.data.items;
                    return response.data.items;
                });
            }
            return items;   // items exist already so just return the array
        },
        save: function(item) {
            return $http.post('/',{item:item}).then(function(response) {
                items.push(item);
                return response;
            });
        }
    }
});

app.controller('RouteOne',function($scope,Items) {
    Items.list().then(function(response) {
        $scope.items = …
Run Code Online (Sandbox Code Playgroud)

angularjs angularjs-service

3
推荐指数
1
解决办法
8816
查看次数