小编Scu*_*Kay的帖子

有没有办法在 Angular 中动态插入现有组件?

我遇到一种情况,Angular 认为它需要重新创建组件,而不仅仅是使用旧组件,这会导致组件在将组件拖到界面中的另一个位置后“刷新”。我有一棵树,我可以从中生成组件。以下是我的树的简化版本:

{
  "left": {
    "type": "FirstComponent"
  },
  "right": {
    "left": {
      "type": "SecondComponent"
    },
    "right": {
      "type": "ThirdComponent"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

将组件拖动到另一个位置后:

{
  "left": {
    "left": {
      "type": "FirstComponent"
    },
    "right": {
      "type": "ThirdComponent"
    }
  },
  "right": {
    "type": "SecondComponent"
  }
}
Run Code Online (Sandbox Code Playgroud)

我将组件动态插入到我的 DockComponent 中,如下所示:

private panelRef: ComponentRef<any>;

ngOnChanges() {
  const componentFactory = this.componentFactoryResolver.resolveComponentFactory(this.panel.type);
  this.dynamicInsert.clear();
  this.panelRef = this.dynamicInsert.createComponent(componentFactory);
}
Run Code Online (Sandbox Code Playgroud)

每当我更改树时,树都会重新生成,因此组件是从头开始构建的。我尝试将 this.panelRef.instance 保存在我的 dockTree 中,但 this.panelRef.instance 是只读的,所以我无法用它做任何事情。我尝试保存 this.panelRef.instance 并将 this.panelRef.instance 的所有属性设置为已保存实例的属性。这让一切都变得一团糟。

有没有办法在 Angular 中动态插入现有组件?

[编辑]

根据 Ilia 的回答,我尝试将 ViewRefs 保存在我的树中。 …

angular

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

如何在MVC4中运行FileResult函数时显示"进行中"

我有一个调用此功能的下载按钮:

public FileResult DownloadExport()
{
    string fileName = "example";

    // Activate 'In progress'
    // Call to a function that takes a while
    // Deactivate 'In progress'

    return File(fileName, System.Net.Mime.MediaTypeNames.Application.Octet, Path.GetFileName(fileName));
}
Run Code Online (Sandbox Code Playgroud)

所以,我调用一个为我生成文件的函数.此功能需要一段时间,我不希望我的用户认为应用程序崩溃.这就是为什么我想在用户等待时显示"进行中"的原因.我该如何实现呢?

澄清:这个问题不是关于下载的进度,而是关于生成文件的函数的进度.

progress download asp.net-mvc-4

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

如何根据页面偏移量将 Angular CDK Overlay 组件保留在页面内

我正在我的图书馆Contexr上工作。我只是重构了我的应用程序以使用 Angular CDK Overlay 来显示上下文菜单,因此我不必再在实际应用程序中包含某些组件(少一个安装步骤)。

我曾经使用FlexibleConnectedPositionStrategy在元素下方创建一个下拉列表,该下拉列表将保留在页面内。此位置策略的创建类似于使用 ElementRef:

const positionStrategy = this.overlay.position()
      .flexibleConnectedTo(elementRef)
      .left(state.left + 'px')
      .top(state.top + 'px');
Run Code Online (Sandbox Code Playgroud)

问题是我没有 ElementRef 可供参考。我的覆盖应该灵活地连接到我的 .left() 和 .top()。有没有办法用 FlexibleConnectedPositionStrategy 做到这一点?目前我正在尝试使用 GlobalPositionStrategy,但这并没有考虑到屏幕外的元素。

打开覆盖层的类:

@Injectable({
  providedIn: 'root'
})
export class ContextMenuService {
  private overlayRef: OverlayRef;

  constructor(private overlay: Overlay, private injector: Injector) {}

  public open(state: ContextState) {
    const overlayConfig = this.getOverlayConfig(state);
    this.overlayRef = this.overlay.create(overlayConfig);
    const contextMenuRef = new ContextMenuOverlayRef(this.overlayRef);
    this.attachDialogContainer(this.overlayRef, state, contextMenuRef);
  }

  private getOverlayConfig(state: ContextState) {
    const positionStrategy = this.overlay.position()
      .global()
      .left(state.left …
Run Code Online (Sandbox Code Playgroud)

overlay angular angular-cdk

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

.htaccess重定向异常

在我的一个项目中,我正在尝试使用.htaccess重定向.我正在使用这样的重定向:

RewriteRule ^$ public/ [L]
RewriteRule (.*) public/$1 [L]
Run Code Online (Sandbox Code Playgroud)

但是,现在我想为重写规则添加一个例外.我希望http://example.com/admin/以相同的方式重定向,仅限于不同的目录.所有其他流量仍应转到公共目录.所以我添加了这样的重写条件:

RewriteCond %{REQUEST_URI} !/admin/
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/$1 [L]
Run Code Online (Sandbox Code Playgroud)

这没有做到这一点.我仍然被重定向到公用文件夹.我也试过这个:

RewriteRule ^admin$ admin/ [L]
RewriteRule admin(.*) admin/$1 [L]

RewriteCond %{REQUEST_URI} !/admin
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/$1 [L]
Run Code Online (Sandbox Code Playgroud)

这只会让事情变得更糟.我现在得到500内部服务器错误.

我现在一直在搜索几个小时,而且我有点厌倦了找到如何为某个文件夹添加例外的示例,但是没有显示如何将此流量重定向到另一个文件夹.你能告诉我我做错了什么,或者我可以尝试哪种其他方法?

.htaccess redirect

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

消失的代码?

我正在开发一个项目,我想根据dataGridView中的选择加载信息.我在表单的设计器中创建了一个dataGridView,我添加了这一行:

this.dataGridView1.SelectionChanged += methodToBeCalled;
Run Code Online (Sandbox Code Playgroud)

这一切都很好,但我有一个讨厌的问题.大多数时候,当我开始申请时,选择一行后没有任何事情发生.然后,当我查看我的代码时,代码行完全消失了.

首先我认为有人提交了一些代码,但即使我不更新它也会消失.

消失的代码可能是什么原因(错误/视觉工作室设计)?我该怎么办呢?

c# events designer datagridview

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