小编Sha*_*iro的帖子

角度异步工厂提供商

我想建立一个异步工作的工厂来返回服务,然后将该工厂提供给工厂提供商,以便在加载时为组件提供该服务.

然而,当供应商将注入TestServiceTestComponent,在运行时类型ZoneAwarePromise.我需要一种方法让提供程序在将服务注入组件之前自动"等待"promise.

服务

export class TestService {
 public test() {
   return 123;
 }
}
Run Code Online (Sandbox Code Playgroud)

提供者和工厂

export function testFactory(auth: any, temp: any) {
  return new Promise((res, rej) => {
    res(new TestService());
  });
}

export let testProvider =
{
  provide: TestService,
  useFactory: testFactory,
  deps: []
};
Run Code Online (Sandbox Code Playgroud)

应用模块

providers: [
    testProvider
]
Run Code Online (Sandbox Code Playgroud)

TestComponent

import { Component, OnInit } from '@angular/core';
import { TestService } from './Test';

@Component({
    selector: 'app-test'
})
export class TestComponent implements OnInit {
    constructor(private …
Run Code Online (Sandbox Code Playgroud)

angular-providers angular

9
推荐指数
1
解决办法
4391
查看次数

VS 2015团队资源管理器 - 更改中的双击行为不一致

我已经使用VS 2015好几个月了.每当我需要使用Git作为源代码控制在团队资源管理器中查看我的更改时,我只需双击"更改"下列出的文件,它就会打开差异视图.

然而,在周末,我不得不重新安装VS 2015.在这样做之后,我发现双击动作现在只是打开文件.这可能看起来很小,但这对我来说非常烦人.

我重新安装了社区和企业,结果是一样的.我也试过使用注册表修复程序,但我没有做任何事情,将双击操作更改回打开为diff视图.

不仅如此,我的工作计算机,目前正在使用VS 2015 Enterprise,DOES还有双击差异视图.我从该计算机导入了所有VS设置到新重新安装的计算机,但没有运气.

这非常令人沮丧.VS不仅应该在安装程序/版本之间保持一致性,它应该允许注册表修复来缓解这个问题,这显然是以前的问题.

visual-studio visual-studio-2015 azure-devops

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

VS2017调试元组任务时出错

使用元组任务时,我无法查看调试信息.EG当一个断点被击中时,我无法在悬停,本地窗口或观察窗口中查看任何变量.

repro只是创建一个新的WPF应用程序,添加System.ValueTuple,将此代码添加到MainWindow.xaml.cs,然后使用"return"在两行设置断点.

using System.Threading.Tasks;
using System.Windows;

namespace WpfApp2
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private async void Button_Click(object sender, RoutedEventArgs e)
        {
            var task1 = TaskWithLocalDebugInfo();
            var task2 = TaskWithoutLocalDebugInfo();
        }

        private async Task<bool> TaskWithLocalDebugInfo()
        {
            var viewableInLocalWindowAndHover = true;
            return viewableInLocalWindowAndHover;
        }

        private async Task<(bool, bool)> TaskWithoutLocalDebugInfo()
        {
            var notViewableInLocalWindowAndHover = true;
            return (notViewableInLocalWindowAndHover, notViewableInLocalWindowAndHover);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑:如果我添加不可见的局部变量来观察,我得到: error CS8182: Predefined type 'ValueTuple`2' must be a struct.

c# visual-studio c#-7.0 visual-studio-2017

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

角度材料:扩展MatPaginator而不创建欺骗分页器

@Component({
    selector: 'app-custom-paginator',
    template: '<mat-paginator #paginator pageSize="10"></mat-paginator>',
    })
export class CustomPaginator extends MatPaginator {
    @ViewChild(MatPaginator) paginator: MatPaginator;

    customMethod(): number {
        return 1
    }
}
Run Code Online (Sandbox Code Playgroud)

主要成分:

@Component({
    selector: 'app-main-component',
    template: '<app-custom-paginator></app-custom-paginator>',
})
export class MainComponent implements OnInit, AfterViewInit {
    @ViewChild(CustomPaginator) paginator: CustomPaginator;
}
Run Code Online (Sandbox Code Playgroud)

我想找出一种方法来扩展MatPaginator.我被困住了,因为在我的子组件中CustomPaginator,我不得不使用它@ViewChild来访问MatPaginator从其视图创建的自定义分页器创建的.

我真正想要的是以某种方式创建一个CustomPaginator来自我MainComponent而不CustomPaginator需要创建和访问MatPaginator它自己的视图子,因为CustomPaginatorIS a MatPaginator.

inheritance typescript angular-material2 angular

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

C#.NET Core 2.1 Span &lt;T&gt;和Memory &lt;T&gt;性能注意事项

using System.Buffers;

const byte carriageReturn = (byte)'\r';
const int arbitrarySliceStart = 5;

// using Memory<T>
async Task<int> ReadAsyncWithMemory(Stream sourceStream, int bufferSize)
{
    var buffer = ArrayPool<byte>.Shared.Rent(bufferSize);
    var bytesRead = await sourceStream.ReadAsync(buffer);
    var memory = buffer.AsMemory(arbitrarySliceStart, bytesRead);
    var endOfNumberIndex = memory.Span.IndexOf(carriageReturn);
    var memoryChunk = memory.Slice(0, endOfNumberIndex);
    var number = BitConverter.ToInt32(memoryChunk.Span);
    ArrayPool<byte>.Shared.Return(buffer);
    return number;
}

// using Span<T> without assigning to variable
async Task<int> ReadAsyncWithSpan(Stream sourceStream, int bufferSize)
{
    var buffer = ArrayPool<byte>.Shared.Rent(bufferSize);
    var bytesRead = await sourceStream.ReadAsync(buffer);
    var endOfNumberIndex = buffer.AsSpan(arbitrarySliceStart, …
Run Code Online (Sandbox Code Playgroud)

.net c# memory memory-management .net-core

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