angular - 将图像从 api url 加载到 Angular 5 组件中

标签 angular .net-core

我有一个 html 结构如下的组件:

<img mat-card-sm-image src="{{img}}" />

和 typescript

constructor(private loginService: LoginService) {
    this.img = null;
    this.loadImage();
  }

loadImage = function () {
   this.img = this.loginService.loginImg();
}

和登录服务:

loginImg() {
    const url = "http://localhost:59078/api/image/login";
    this.http.get(url, { responseType: 'blob' }).subscribe(result => {
      console.log(result);
      return result;
    });
}

和 API 核心 Controller

  [HttpGet]
  [AllowAnonymous]
  [Produces("image/png")]
  public IActionResult Login()
  {
     var file = Path.Combine(Directory.GetCurrentDirectory(),
                        "wwwroot", "images", "login.png");

     return PhysicalFile(file, "image/png");
  }

图像未加载的想法...为什么?

最佳答案

this.http.get(url, { responseType: 'blob' }).subscribe(result => {
  console.log(result);
  return result;
});

此处的 return 不执行任何操作(特别是因为您没有返回 http.get 本身)。该服务应该返回可观察的 http.get(不带订阅),然后当您从组件订阅它时,您可以从内部更改 img 变量。

修复方法如下

public img: string;

constructor(private loginService: LoginService) {
  this.loadImage();
}

loadImage() {
  this.loginService.loginImg().subscribe(result => {
    this.img = result;
  });
}


# Login service:

loginImg() {
  const url = "http://localhost:59078/api/image/login";
  return this.http.get(url, { responseType: 'blob' });
}

这是不相关的,但您可能会考虑使用 Angular 生命周期钩子(Hook)(如 ngOnInit)而不是初始化变量的构造函数

constructor(private loginService: LoginService) { }

public ngOnInit(): void {
  this.loadImage();
}

关于angular - 将图像从 api url 加载到 Angular 5 组件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50088231/

相关文章:

apache - Angular2 不适用于 Apache

git - Docker:构建上下文并在 Git 中使用 .NET 项目和子模块会导致一个大问题

c# - 为什么我的 appsettings.json 文件中的配置值不通过 Configuration.GetSection().Get<MyObject> 映射到我的自定义 POCO 对象的字段?

c# - 大型 HTTPResponseMessage 导致 .NET Core 服务器进程内存不足

.net - EF Core 使用类库项目和 DB 脚手架从用户 secret 中读取连接字符串

angular - 什么时候在 Angular 项目中使用类或接口(interface)?

html - Angular 应用程序 - 在哪里放置脚本标签

javascript - 如何使用json数据计算Angular中的平均值

angular - 根据选项卡组所选索引隐藏/显示元素会导致错误 : Expression has changed after it was checked

c# - 如何在 asp.net core SignalR 中迭代用户?