小编Tho*_*ras的帖子

何时在 angular 中使用 waitForAsync

从文档中我们可以阅读:

waitForAsync(fn: Function): (done: any) => any

将测试功能包装在异步测试区中。当该区域内的所有异步调用完成后,测试将自动完成。可用于包装注入调用。

我不明白,什么时候使用waitForAsync函数?什么之间的区别waitForAsyncVS(asyncfakeAsync)?

karma-jasmine angular angular-test

16
推荐指数
2
解决办法
8170
查看次数

Angular 10 - 注册自定义语言环境

由于 Angular 更新,我遇到了语言环境问题。

目前:

import localePl from '@angular/common/locales/pl';
registerLocaleData(localePl);
Run Code Online (Sandbox Code Playgroud)

它正在工作,但会导致错误:

app.module.ts 中的警告取决于@angular/common/locales/pl。CommonJS 或 AMD 依赖项可能会导致优化救助。

它在哪里工作?

  1. 我提供LOCALE_ID价值pl-PL
  2. DatePipe在 HTML 中使用。(变量 | 日期) -variable等于new Date()

测试方法:

1)

import localePl from '@angular/common/locales/global/pl'; registerLocaleData(localePl, 'pl-PL');

错误:

'无法读取管道的未定义属性'0'

在代码中: variable | date

其中变量等于 new Date()

2) 如果我完全删除registerLocaleData

错误:

缺少语言环境“pl-PL”的语言环境数据。对于管道“DatePipe”

typescript angular-i18n angular

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

在 ViewPager2 中启动子片段

我正在使用ViewPager2FragmentStateAdapter. 基本 3 片段 (ABC)。这意味着,您可以从 A 滚动到 B,从 B 滚动到 C

我想做的事?

从片段 B 开始子片段 D

(A-B-C) | D 从片段B开始片段D,当用户单击“后退箭头”(顶部栏)时,片段D将被销毁并且用户将回到B。(我不想使用activity)

我尝试了什么?

val ft: FragmentTransaction = requireActivity().supportFragmentManager.beginTransaction()
ft.setCustomAnimations(android.R.animator.fade_in, android.R.animator.fade_out)
ft.replace(android.R.id.content, DetailsFragment())
ft.addToBackStack(null)
ft.commit();
Run Code Online (Sandbox Code Playgroud)

对于上面的代码,我有两个问题。

  1. 两个片段(B 和创建的 D)重叠(我同时看到 B 和 D)
  2. 单击后退按钮(顶部栏上)时,片段 B 或 D 都不会关闭

编辑:将片段管理器传递给ViewPager2onCreate() 方法中的 main_activity

pagerAdapter = PagerAdapter(supportFragmentManager, lifecycle)
binding.mainViewPager.adapter = pagerAdapter
Run Code Online (Sandbox Code Playgroud)

PagerAdapter 是一个简单的类: class PagerAdapter(fm: FragmentManager, lifecycle: Lifecycle) : FragmentStateAdapter(fm, lifecycle)

android android-viewpager android-viewpager2

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

可完成的未来 - 完整的方法

我有一个代码:

CompletableFuture<Integer> c1 = new CompletableFuture<Integer>()
        .thenApply((data) -> data * 2);
c1.thenAccept(System.out::println);

c1.complete(20);


CompletableFuture<Integer> c2 = new CompletableFuture<>();

c2.thenApply(data -> data * 2)
        .thenAccept(System.out::println);
c2.complete(20);
Run Code Online (Sandbox Code Playgroud)

输出:

20 40

题:

  1. 为什么c1和c2之间的输出有差异?
  2. 为什么需要通过调用来重复c1中的未来类型:

新的CompletableFuture < 整数 >()

java java-8 completable-future

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

Spring 中的事务和流

我试图理解为什么这段代码不起作用

在组件中:

@PostConstruct
public void runAtStart(){

    testStream();
}

@Transactional(readOnly = true)
public void testStream(){
    try(Stream<Person> top10ByFirstName = personRepository.findTop10ByFirstName("Tom")){
        top10ByFirstName.forEach(System.out::println);
    }
}
Run Code Online (Sandbox Code Playgroud)

和存储库:

public interface PersonRepository extends JpaRepository<Person, Long> {
    Stream<Person> findTop10ByFirstName(String firstName);
}
Run Code Online (Sandbox Code Playgroud)

我得到:

org.springframework.dao.InvalidDataAccessApiUsageException:您正在尝试在没有周围事务的情况下执行流查询方法,该事务保持连接打开,以便可以实际使用流。确保使用流的代码使用 @Transactional 或任何其他声明(只读)事务的方式。

spring java-8

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

qt组合框可读但可编辑

我在QComboBox中有一些项目(由程序添加-这是很多添加的项目(大约1000个))

因此,我使组合框可编辑->然后,很容易找到正确的项目。(例如,如果我想找到名为“我的示例”的项目,则在组合框“ MY”中写入,并且得到以“ MY”开头的项目)

但是,当我在combobox中写其他东西时,combobox会添加此项。

我不想要,我只想:

  1. 只能选择按计划添加的ITEMS
  2. 阻止添加自定义项目
  3. 当我写“ MY”之类的东西但由于存在“ My Example”,“ My Example2”而不选择“ My Example”项时

并按按钮接受我的选择-然后如何检查我从程序添加的,未编写且用户未完成的项目中选择的项目?

c++ qt combobox

2
推荐指数
1
解决办法
1605
查看次数

删除范围循环中项目的最快方法

我在考虑这个循环:

struct tmp {
    int min;
    int max;
    tmp(int a, int b) :min(a), max(b){};
};

std::vector <tmp> data;

for (auto tmp_a : data){
     if(tmp_a.min == 0){
           //how to delete tmp_a item from data from there?
     }
}
Run Code Online (Sandbox Code Playgroud)

当然我可以迭代这个循环,但我不认为这是最快的方法.(当然我可能是错的 - 然后纠正我)

问题: 如何删除范围循环中的项目?(使用最快的方法)

c++ c++11

2
推荐指数
1
解决办法
509
查看次数