小编Dan*_*l B的帖子

Angular2路由器附加组件而不是替换它

我有一个带有一个路由器插座的Angular2应用程序,根据侧面菜单中单击的链接显示不同的组件.

主要组件的标记包含这样的<router-outlet>外观

<div *ngIf="authenticated == false">
  <app-login></app-login>
</div>
<div *ngIf="authenticated">
  <div class="page home-page">
    <header class="header">
      <app-navbar></app-navbar>
    </header>
    <div class="page-content d-flex align-items-stretch">
      <div class="sidebar-container">
        <app-sidebar-menu></app-sidebar-menu>
      </div>
      <div class="content-inner">
      <app-page-header></app-page-header>
        <div id="sub-content">
          <router-outlet></router-outlet>
        </div>
        <app-footer></app-footer>
      </div>
    </div>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

如果我单击演示链接,将演示演示组件,但如果我单击Home链接,则主组件将呈现在DOM中的演示组件上方.点击它们几次将产生这样的DOM

<div _ngcontent-c0="" id="sub-content">
    <router-outlet _ngcontent-c0=""></router-outlet>
  <app-home _nghost-c6="">...</app-home>
  <app-demo _nghost-c7="">...</app-demo>
  <app-home _nghost-c6="">...</app-home> <!-- Why so many here? Should be just either one <app-home> or <app-demo>  -->
  <app-demo _nghost-c7="">...</app-demo>
  <app-home _nghost-c6="">...</app-home>
  <app-demo _nghost-c7="">...</app-demo>
  <app-footer _ngcontent-c0="" _nghost-c5="">...</app-footer>
</div>
Run Code Online (Sandbox Code Playgroud)

路线定义为 …

angular angular-router

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

在lettable rxjs运算符的组合管道中捕获错误

我们刚刚将其中一个应用程序升级到Angular 5,并开始转换为rxjs v5.5中引入的lettable 运算符.

因此,我们使用.pipe()运算符将可观察的管道重写为新语法.

我们之前的代码看起来像这样,如果抛出错误,则.catch()内部.switchMap()不会中断效果的运行.

@Effect()
loadData$ = this.actions$
.ofType(LOAD_DATA)
.map((action: LoadData) => action.payload)
.withLatestFrom(this.store.select(getCultureCode))
.switchMap(([payload, cultureCode]) => this.dataService.loadData(payload, cultureCode)
  .map(result => {
    if (!result) {
      return new LoadDataFailed('Could not fetch data!');
    } else {
      return new LoadDataSuccessful(result);
    }
  })
  .catch((err, caught) => {
    return Observable.empty();
  });
  );
Run Code Online (Sandbox Code Playgroud)

如果在调用中抛出错误dataService,它将被捕获并处理(简化了错误处理).

有了新的语法和用法.pipe(),我们现在有了这个

@Effect()
loadData$ = this.actions$
.ofType(LOAD_DATA)
.pipe(
  map((action: LoadData) => action.payload),
  withLatestFrom(this.store.select(getCultureCode)),
  switchMap(([payload, cultureCode]) => this.dataService.loadData(payload, cultureCode)),
  map(result => …
Run Code Online (Sandbox Code Playgroud)

rxjs ngrx-effects angular ngrx-store angular5

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

选择一列,按另一列排序

我正在使用LINQ to SQL从数据库中进行选择.我想选择一个由值组成的列String,但是由另一个包含"优先级"值的列排序int.

这就是我的LINQ语句现在的样子:

var query = from vk in db.Valdkurs
            where vk.pnr == pnr
            select vk.kursnamn.OrderByDescending(x => vk.prioritet);
Run Code Online (Sandbox Code Playgroud)

在第三行代码NotSupportedException中抛出异常消息

类型'System.String'不支持序列运算符

我得出结论,这可能是因为

vk.kursnamn.OrderByDescending(x => vk.prioritet);
Run Code Online (Sandbox Code Playgroud)

哪里vk.KursnamnString类型.

我怎样才能选择vk.Kursnamn并按顺序排序vk.Priority

c# linq sql-order-by linq-to-sql

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

我可以在 react-bootstrap 中自定义 Carousel-indicators

我正在使用http://react-bootstrap.github.io/ Carousel 组件。我正在尝试自定义包含一些文本的轮播指示器,并使其看起来像一个带有文本的按钮,但将渲染“ol”标签反应为一个新的 CarouseItem 并且没有重定向功能

    return (
       <Carousel id="sampleSlide" indicators={false}>
          <ol className="carousel-indicators">
            <li data-target='#sampleSlide' data-slide-to="0" className="active"></li>
            <li data-target= '#sampleSlide' data-slide-to="1"></li>
          </ol>
          <CarouselItem>
            <div className="itemContent">
               Hello World
            </div>
          </CarouselItem>
          <CarouselItem>
            <div className="itemContent">
               Hello World
            </div>
          </CarouselItem>
      </Carousel>
    );
Run Code Online (Sandbox Code Playgroud)

有什么方法可以自定义它或任何其他方法吗?

javascript components carousel reactjs react-bootstrap

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

C# - 比较不同编码的字符串

使用C#,我TextBox.Text从.ascx页面获取一个值.当我将值的相等性与LINQ查询中的常规字符串对象进行比较时,它总是返回false.

我得出的结论是,它们的编码方式不同,但到目前为止还没有转换或比较它们的运气.

docname = "Testdoc 1.docx"; //regular string created in C#
fetchedVal = ((TextBox)e.Item.FindControl("txtSelectedDocs")).Text; //UTF-8
Run Code Online (Sandbox Code Playgroud)

当表示为文字时,上述两个字符串是相同的,但是byte[]由于编码,它们的比较明显不同.

我尝试了很多不同的东西,比如:

System.Text.Encoding.Default.GetString(utf8.GetBytes(fetchedVal));
Run Code Online (Sandbox Code Playgroud)

但那将返回价值"Testdoc 1.docx".

如果我改为尝试

System.Text.Encoding.Default.GetString(System.Text.Encoding.Default.GetBytes(fetchedVal));
Run Code Online (Sandbox Code Playgroud)

它返回"Testdoc 1.docx"但是Equals()-check仍然返回false.

我也试过以下,这似乎是推荐的方法,但没有运气:

byte[] utf8Bytes = Encoding.UTF8.GetBytes(fetchedVal);
byte[] unicodeBytes = Encoding.Convert(Encoding.UTF8, Encoding.Unicode, utf8Bytes);
string fetchedValConverted = Encoding.Unicode.GetString(unicodeBytes);
Run Code Online (Sandbox Code Playgroud)

罪魁祸首似乎是空白,因为在检查字节序列时,它始终是不同的第七个字节.

你如何正确地从UTF-8转换为C#中的默认字符串编码?

c# string encoding

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

ENOENT: 没有这样的文件或目录,lstat '/Users/Desktop/node_modules'

发生了未处理的异常:

ENOENT: no such file or directory, lstat 
'/Users/Desktop/node_modules'
See "/private/var/folders/3p/l_k1wk8n76v3cfwnxk0blx000000gn/T/ng- 
DF5EZ7/angular-errors.log" for further details.
Run Code Online (Sandbox Code Playgroud)

每当我这样做时ng serve,就会发生此错误,谁能告诉我错误的原因是什么。长时间停留在此。

npm angular-cli angular

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

将多个数据绑定添加到 Winforms 标签

我在Label控件中显示不同的值,从BindingSource绑定到 a 的 aDataGridView取决于选择了哪一行。

现在,标签具有如下所示的数据绑定:

this.label9.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.bev_BindingSource, "countryRegion", true));
Run Code Online (Sandbox Code Playgroud)

它成功地显示了countryRegion列的值。

是否可以从两列设置绑定为一个连接的结果,在这种情况下,countryRegioncountry

c# data-binding winforms

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

返回promise时自定义异步验证无效

我正在调用web api来检查urlalias是否可用,对于此任务,我在异步验证器中使用了httpservice.问题是,当调用验证器时,将执行所有正确的代码路径(所有console.log()运行并按预期运行).

无论来自验证的promise是否返回/解析为null或者{ 'isUrlAliasActivityMainAvailable': true },控制器总是将错误对象显示为跟随,从而将表单状态保持为无效,为什么(血腥地狱!)?

我正在使用:angular:2.1.0和rxjs:5.0.0-beta.12

在此输入图像描述

这是我的formbuilder:

this.formBuilder.group({
//...
"urlAliasActivityMain":[null,[ ValidatorsZr.isUrlAliasActivityMainAvailableAsyncValidator(this.httpActivityService)]],
});
Run Code Online (Sandbox Code Playgroud)

这是我的验证器:

   public static isUrlAliasActivityMainAvailableAsyncValidator(httpActivityService: HttpActivityService) {
        return function (control: FormControl): Promise<any> | Observable<any> {

            const promise = new Promise<any>(
                (resolve, reject) => {
                    httpActivityService.isUrlAliasActivityMainAvailable(control.value)
                        .subscribe(
                        (data: any) => {
                            console.log("isUrlAliasActivityMainAvailableAsyncValidator");
                            console.log(data);
                            if (data == false) {
                                console.log("data == false");
                                resolve({ 'isUrlAliasActivityMainAvailable': true });
                            }
                            else {
                                console.log("data == true");
                                resolve(null);
                            }
                        },

                    )
                });

            return promise;
        }
    }
Run Code Online (Sandbox Code Playgroud)

validation formbuilder promise rxjs angular

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

Java内存引用问题

为什么下面提到的代码打印4,3,2,1,0,为什么不打印4,4,4,4,4.由于引用sb是相同的,所以为什么不指向最后更新的值,为什么不将所有值更新为4

package iteration;

import java.util.Stack;

public class test {

    public static void main(String[] args) {
        Stack stack = new Stack();
        StringBuilder sb;
        for (int i = 0; i < 5; i++) {
             sb = new StringBuilder();
            sb.append(i);
            stack.add(sb);
        }

        for (int i = 0; i < 5; i++) {
            System.out.println(stack.pop());
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

java

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

类型中不存在类型名称"DatasetTableAdapters"

我已经向我添加了一个DataGridView控件来TabControl显示存储在本地应用程序数据库的单个表中的数据Cellar.sdf.

当我将数据源添加到DataGridView时,我选择要显示数据的表并预览数据.它显示数据库中的内容.

当我构建项目时,我收到以下错误:

The type name 'CellarDataSetTableAdapters' does not exist in the type 'Winecellar.Winecellar'
The type name 'CellarDataSet' does not exist in the type 'Winecellar.Winecellar'
Run Code Online (Sandbox Code Playgroud)

我的项目名称是'Winecellar'.当我在VS2012中创建项目时,它创建了一个子文件夹,导致文件结构'Winecellar.Winecellar',但我不确定这是否与此问题有关.在文件夹里面我确实有文件,CellarDataSet它说我失踪了.

我是否TableAdapter必须为我的数据库创建一个单独的数据库,或者我必须以不同的顺序执行操作才能使其工作?

导致我的错误的代码行在我的Form1.Designer.cs文件中,

(1)        this.cellarDataSet = new Winecellar.CellarDataSet();
           this.wineBindingSource = new System.Windows.Forms.BindingSource(this.components);
(2)        this.wineTableAdapter = new Winecellar.CellarDataSetTableAdapters.WineTableAdapter();
Run Code Online (Sandbox Code Playgroud)

(我在MSDN论坛上发现了一个类似的主题,虽然我无法通过阅读它来解决我的问题.请在此处阅读.

c# datagridview dataset tableadapter

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