小编Ste*_*ens的帖子

什么是Angular 2模板中的let-*?

我在Angular 2模板中遇到了一个奇怪的赋值语法.

<template let-col let-car="rowData" pTemplate="body">
    <span [style.color]="car[col.field]">{{car[col.field]}}</span>
</template>
Run Code Online (Sandbox Code Playgroud)

看来,let-col和let-car="rowData"创建两个新的变量col和car,然后可以绑定到模板中.

资料来源:https://www.primefaces.org/primeng/#/datatable/templating

这个神奇的let-*语法叫什么?

它是如何工作的?

let-something和之间有什么区别let-something="something else"?

可以使用let-col而不是在let-car="rowData"不更改最终DOM结构的情况下重写上述代码吗?

angular2-template primeng angular

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

Subject.complete()是否取消订阅所有听众?

我用这个方法构建了一个简单的确认对话服务(Angular 2):

confirm(body?: string, title?: string): Subject<void> {
    this.confirmation = new Subject<void>();
    // ... show dialog here... "are you sure?"
    return this.confirmation;
}

_onYesClicked() {
  // ... closing the dialog
  this.confirmation.next();
  this.confirmation.complete();
} 

_onNoClicked() {
  // ... closing the dialog
  this.confirmation.complete();
}
Run Code Online (Sandbox Code Playgroud)

用法:

confirmationService.confirm().subscribe(() => alert("CONFIRMED"));
Run Code Online (Sandbox Code Playgroud)

如果有人使用该服务,他会返回一个Subject(这是一个Observable),并且可以"订阅()".点击"是"时调用订阅,因此确认给出了...

这是正确的方法吗?更重要的是...将致电

this.confirmation.complete();
Run Code Online (Sandbox Code Playgroud)

取消订阅订阅的侦听器,从而防止任何延迟引用(内存泄漏)?

observable rxjs angular

30
推荐指数
1
解决办法
1万
查看次数

处理Resolve服务中的错误

假设我有一个ValuesComponent显示ValueHTML表格中的数组.

// in value.ts
export class Value { ... }
Run Code Online (Sandbox Code Playgroud)
// in values.component.ts
@Component(...)
export class ValuesComponent { ... }
Run Code Online (Sandbox Code Playgroud)

作为一名优秀的程序员,我创造了一个不同的类,负责提供价值.我们称之为ValuesService.

// in values.service.ts
@Injectable()
export class ValuesService
{
    public getValues(): Observable<Value[]>
    {
       ...
    }
}
Run Code Online (Sandbox Code Playgroud)

假设服务从Web服务获取其值: /api/values

现在,我想让Angular路由器在导航到组件之前预先获取值,而不是将服务直接注入到我的组件中.

为此,我创建了一个Resolve服务类并将其插入路由器模块.

// in values-resolver.service.ts
export class ValuesResolverService implements Resolve<Value[]> {
    constructor(private backend: ValuesService) {
    }

    public resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<Value[]> {
        return this.backend.getValues();
    }
}
Run Code Online (Sandbox Code Playgroud)
// In app.module.ts (in @NgModule())
imports: [ …
Run Code Online (Sandbox Code Playgroud)

rxjs typescript angular

18
推荐指数
1
解决办法
5530
查看次数

TransformBlock永远不会完成

我试图在TPL Dataflow块中完成"完成".特别是,TransformBlock似乎没有完成.为什么?

示例程序

我的代码计算从1到1000的所有整数的平方.我使用了a BufferBlock和a TransformBlock.稍后在我的代码中,我等待完成TransformBlock.该块永远不会实际完成,我不明白为什么.

static void Main(string[] args)
{
    var bufferBlock = new BufferBlock<int>();
    var calculatorBlock = new TransformBlock<int, int>(i =>
    {
        Console.WriteLine("Calculating {0}²", i);
        return (int)Math.Pow(i, 2);
    }, new ExecutionDataflowBlockOptions { MaxDegreeOfParallelism = 8 });

    using (bufferBlock.LinkTo(calculatorBlock, new DataflowLinkOptions { PropagateCompletion = true }))
    {
        foreach (var number in Enumerable.Range(1, 1000))
        {
            bufferBlock.Post(number);
        }

        bufferBlock.Complete();

        // This line never completes
        calculatorBlock.Completion.Wait();

        // Unreachable code
        IList<int> results;
        if (calculatorBlock.TryReceiveAll(out results))
        {
            foreach …
Run Code Online (Sandbox Code Playgroud)

.net c# task-parallel-library tpl-dataflow

12
推荐指数
2
解决办法
3226
查看次数

异步 EventEmitter 的正确用法是什么?

我注意到 EventEmitter 可以配置为异步发出事件。

constructor(isAsync: boolean = false)
创建一个 EventEmitter 实例,它依赖于 isAsync,同步或异步传递事件。

(取自https://angular.io/api/core/EventEmitter)

我的组件何时应该异步传递事件而不是使用默认行为?

angular

12
推荐指数
1
解决办法
4460
查看次数

如何将其他 SDK 版本添加到 .NET Docker 映像

我使用 Docker 来构建我的 .NET 应用程序,并使用Microsoft 提供的基础映像( mcr.microsoft.com/dotnet/core/sdk:3.1 )。

除了 .NET Core SDK 3.1 之外,我还需要同一容器内的 .NET Core SDK 2.2。

如何扩展基础映像并安装 .NET Core SDK 2.2,而不破坏基础映像中的版本?我注意到 Microsoft 不使用包管理器在基础映像中安装 .NET。

docker dotnet-sdk

8
推荐指数
0
解决办法
1229
查看次数

为什么ngOnInit不是第一个生命周期钩子?

我是Angular 2的新手.为什么ngOnInit不是在组件或指令的构造函数之后调用的第一个钩子?

资料来源:https://angular.io/docs/ts/latest/guide/lifecycle-hooks.html

在此输入图像描述

lifecycle angular

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

解析三个字母的语言名称作为文化信息

我正在使用一个API,它返回一些文件中有关音频流的信息,更具体地说是三字母ISO名称(ISO 639-2)表示中的音频语言.

我想将这些信息解析为一个新的CultureInfo对象,但没有构造函数采用三个字母的代码.我当然可以写一个巨大的选择声明(切换给你C#人),但我认为首先要求更好的方法更具成本效益.我是不是运气不好,或者有一个使用三个字母名称创建CultureInfo对象的秘密方法?

.net vb.net parsing cultureinfo

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

阻止关闭按钮保存MS Access中的记录

在Microsoft Access窗体中,每当当前记录更改时,绑定控件中的任何更改都会以静默方式保存到数据库表中.这很好,但是当用户关闭表单时我不希望它发生,因为它与许多人期望的完全相反.

最好的示例是当您尝试使用未保存的更改关闭excel文件时,它会询问是否应该丢弃更改.这正是我想要在Access中实现的,但是找不到任何方法来捕获VBA中的关闭按钮的事件.

表单的Unload事件是当有人单击关闭按钮时触发的第一个事件,但到那时更改已写入数据库.

这是完全可能的,还是我必须创建自己的关闭按钮?我很乐意为这样的琐碎事情编写大量代码,但我不喜欢混乱使用GUI.

vba ms-access-2007

5
推荐指数
3
解决办法
3万
查看次数

类版本化

我正在寻找一种干净的方法来对我的代码库进行增量更新,而不会破坏向后兼容性.这可能意味着向类添加新成员,或更改现有成员以提供其他功能.有时我需要更改一个成员,以至于它会破坏现有代码(例如重命名方法或更改其返回类型),因此我不想在发货后触摸任何现有类型.

我目前设置它的方式是通过继承和多态来创建一个扩展该类的先前"版本"的新类.

类图

这种方式的工作方式是根据属性的实际值创建StatusResult(例如StatusResultVersion3)的适当版本ProtocolVersion,并将其作为实例返回CommandResult.

因为.NET似乎没有类版本控制的概念,所以我必须自己编写:将版本号附加到类名的末尾.这无疑会让你畏缩.我可以很容易地想象自己在放大图表后睁大眼睛.但它的确有效.我可以添加新成员并覆盖现有成员,而不会引入任何代码更改.

有没有更好的方法来版本化我的课程?

vb.net versioning

5
推荐指数
1
解决办法
661
查看次数