小编Gro*_*iel的帖子

Angular 2映射http响应类的实例

我想知道将get响应中的http响应映射到类而不是基本Javascript对象的最佳方法是什么.

在我目前的尝试中,我很简单new ClassName(data),但可能有一个模糊的Angular指定和完全令人敬畏的方式,我不知道.

这是我目前的代码:

getPost(id:number){
    return this._http.get(this._postsUrl+'/'+id)
                .map(res => new Post(res.json().data))
                .do(data => console.log(data))
                .catch(this.handleError);
}
Run Code Online (Sandbox Code Playgroud)

我需要Post成为一个类,而不仅仅是一个接口,因为我有内部方法.

我按照HeroTutorial和http"开发人员指南"进行操作,并按照他们的getHeroes方法执行:

getHeroes () {
return this.http.get(this._heroesUrl)
                .map(res => <Hero[]> res.json().data)
                .catch(this.handleError);
}
Run Code Online (Sandbox Code Playgroud)

我不知何故希望这<Hero[]>部分能做到这一点:拿Hero类并创建它的新实例,但我的测试表明它没有,这几乎只是Typescript知道会发生什么.

有任何想法吗 ?谢谢!

http angular

15
推荐指数
1
解决办法
7980
查看次数

学说2限制IN子查询

我正在尝试在Doctrine2中的IN语句中使用子查询.

以下是原始SQL查询的外观:

SELECT * FROM license 
WHERE id 
IN (SELECT id 
    FROM license 
    WHERE subscription = x 
    ORDER BY date DESC
    LIMIT 5)
ORDER BY name ASC;
Run Code Online (Sandbox Code Playgroud)

我想要做的是显示按名称排序的最后5个结果,所以我必须首先查询最后5个结果,然后在主查询中按名称排序.

问题是我似乎无法限制内部查询.

这是我目前的代码:

$qb = $this->createQueryBuilder('l');
$qb->select('l.id');
$qb = $this->whereSubscriptionId($qb, $subscription_id);
$qb = $this->offsetLimitOrder($qb, 0, 5, 'deliveryDatetime desc');

//Second Query, adds the "order by X"
$qb2 = $this->createQueryBuilder('l2');
$qb2->add('where', $qb2->expr()->in('l2.id', $qb->getQuery()->getDQL()));
if(isset($order)){
    $order = explode(' ', $order);
    $qb2->addOrderBy('l2.'.$order[0], $order[1]);
 }

 return $qb2->getQuery()
            ->getResult();
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我创建了我的第一个查询,我订购并限制它(通过自定义方法)然后我尝试在第二个查询中使用它.

但是,似乎LIMIT不是DQL语句的一部分,因为当我var_dump第一个查询的DQL时,LIMIT不存在,这意味着当我运行$ qb2-> getQuery() - > getResult()时,它被完全忽略.

我通过启动第一个查询并在第二个查询中手动输入结果来实现它,但它很难看.

关于如何正确地做到这一点的任何想法?

谢谢 …

subquery limit dql doctrine-orm

13
推荐指数
1
解决办法
2598
查看次数

Angular2,保持模型在组件之间同步

我正在考虑从我信任的骨干转移到Angular2(或者我应该说,我的老板想玩一个新的玩具,这对我很好),我在网上搜索了很多并进行了一些测试,但我似乎无法找到这个简单问题的答案:

我可以在两个组件之间保持两个模型同步吗?例子:我在侧边栏上有一个用户列表,它是一个组件,还有一个用于在我的"主页面"中编辑所述用户的表单,这是另一个组件.

侧边栏负责显示其集合,表单负责获取其模型.更新模型后,我希望更改能够反映在侧边栏中,而无需再次通过服务器.

我知道SpinJS做到了这一点,我在Backbone中使用事件来实现同样的东西(基于模型类和id),但是我想知道Angular2是否有一种原生的处理方式?如果没有,那么如何实施这种行为呢?

谢谢.

编辑:

我在这个Plunker中添加了我的测试文件:http://plnkr.co/edit/jIdnu68ZDMDSFJkomN3Y

首先,选择一个英雄,然后单击"查看详细信息",这将向http.get内存服务器发出请求以获取英雄.

其次,点击"Give sword",这将为所选用户添加一个武器.出于测试目的,我不再使用已经加载的用户,而是http.get再次使用相同的用户.

当我在文本框中更改名称时,不会更新第二个实例的名称.

您必须想象我无法出于任何原因使用当前的英雄实例,我想再次从服务器请求它.

components synchronization models angular

6
推荐指数
1
解决办法
2471
查看次数