在我的class PostController < ApplicationController
after_action :notify_users, only: [:create]
...
def notify_users
@post.mentioned_users.each do |user|
Notification.create!(recipient: user,
actor: @post.user,
action: 'mentioned',
notifiable: self)
end
end
end
中,我注册了一个HTTP拦截器,如下所示:
class Post < ApplicationRecord
def mentions
@mentions ||= begin
regex = /@([\w]+)/
matches = self.body.scan(regex).flatten
end
end
def mentioned_users
@mentioned_users ||= User.where(username: self.mentions)
end
end
但是,从延迟加载的模块发出的请求不使用拦截器。 它也仅在延迟加载的模块中注册HTTP拦截器时有效。
但是我只想在app.module.ts
中提供一次。
关于如何执行此操作的任何想法?还是我必须在每个模块中提供它?
答案 0 :(得分:0)
答案 1 :(得分:0)
我认为您所发生的情况与this GitHub thread相似。 JB Nizet在他的评论中也可能提到了同一件事。
您很可能已将HttpClientModule
添加到imports
的{{1}}数组中。因此,它没有使用InterceptorService。要使其工作,只需从那里摆脱掉。完成后,它将使用全局HTTP拦截器服务。
这是您推荐的Working Sample StackBlitz。