尝试解析路由器中来自angularfire2的某些数据。当我通过return of('Hello Alligator!')
传递组件时,我的组件日志Hello Alligator
,但是当我尝试从angularfire服务解析数据时,它只是挂起而从未解析。我还想将其设置为仍可以添加到集合中的位置。我在做什么错了?
//SmsListResolverService
import {Resolve, ActivatedRouteSnapshot, RouterStateSnapshot} from '@angular/router'
import {Observable, of} from 'rxjs'
import { SMS } from './SMS.interface';
import {FirebaseService} from '../_shared/firebase.service'
import { Injectable } from '@angular/core';
import { AngularFirestore } from '@angular/fire/firestore';
@Injectable()
export class SmsListResolverService implements Resolve<Observable<any>>{
constructor(private db:AngularFirestore){
}
resolve(){
// this_works-----> return of('Hello Alligator!')
return this.db.collection('messages').valueChanges() //not this
}
}
//Route module
export const routes: Routes = [
{
path: 'chat',
component: SmsComponent,
resolve: { messages: SmsListResolverService }
}
];
//component
export class SmsComponent{
constructor(public sms: SmsService, private route:ActivatedRoute) {
console.log(this.route.snapshot.data)
}
答案 0 :(得分:0)
像哈维尔一样,您需要订阅您的valueChanges:
def main(file_path):
with open(file_path, 'rb') as pdf_file:
pdf_buffer = StringIO(pdf_file.read())
try:
input_pdf = pyPdf.PdfFileReader(pdf_buffer)
except:
input_pdf = pyPdf.PdfFileReader(decompress_pdf(pdf_buffer))
no_of_pages = input_pdf.getNumPages()
headers = []
row_list = []
text = []
count = 0
for i in range(no_of_pages):
writer = pyPdf.PdfFileWriter()
page = input_pdf.getPage(i)
writer.addPage(page)
file_name = '%s\\%s.pdf' % (os.getcwd(), count)
newFile = open(file_name,'wb')
writer.write(newFile)
newFile.close()
count += 1
try:
process = subprocess.call(['pdftotext', '-layout', file_name])
except:
print 'fail'
name_text = re.sub('.pdf$','.txt',file_name)
with open(name_text) as f:
for line in f:
line = line.decode('ascii','ignore').replace('\n','').replace(',','').replace(';','').strip()
if line != '':
text.append(line)
os.remove(name_text)
os.remove(file_name)
details_start = ''
details_end = ''
details_dict = {}
attribute_start = ''
details_bool = True
attributes_bool = False
for x,y in enumerate(text):
if 'DATABASE' in y:
details_start = int(x +1)
if 'PostingBody' in y:
details_end = int(x)
#print details_end
if 'Attributes' in y:
attribute_start = int(x)
attributes_bool = True
renewal_dates = []
for x in range(details_start, details_end):
if 'posting_renewal_dates' in text[x]:
n = 0
#print text[x].split(':')[1].strip()
if text[x].split(':')[1].strip() != 'n/a':
testbool = True
while testbool:
if not 'record_modified:' in text[x+n]:
if 'posting_renewal_dates:' in text[x+n]:
renewal_dates.append( text[x+n].split(': ')[1] )
else:
renewal_dates.append( text[x+n] )
n += 1
else:
testbool = False
elif not text[x][0].isupper():
#print text[x]
key = text[x].split(':')[0]
value = text[x].split(':')[1]
if key != '':
details_dict[key] = value
try:
xObject = page['/Resources']['/XObject'].getObject()
for obj in xObject:
if xObject[obj]['/Subtype'] == '/Image':
size = (xObject[obj]['/Width'], xObject[obj]['/Height'])
data = xObject[obj].getData()
mode = "RGB"
try:
if not os.path.exists('%s/%s' % (new_folder, details_dict['posting_id'])):
os.mkdir('%s/%s' % (new_folder, details_dict['posting_id'].strip(' ')))
img_dir = '%s/%s' % (new_folder, details_dict['posting_id'].strip(' '))
print 'Success -- ' + img_dir
else:
print "Directory already exists"
except:
print 'Directory %s already exists' % details_dict['posting_id']
#print xObject[obj]['/Filter']
#print xObject[obj]['/ColorSpace']
if xObject[obj]['/Filter'] == '/FlateDecode':
img = Image.frombytes(mode, size, data)
img.save(img_dir + '\\' + obj[1:] + ".jpg")
elif xObject[obj]['/Filter'] == '/DCTDecode':
img = open(obj[1:] + ".jpg", "wb")
img.write(data)
img.close()
elif xObject[obj]['/Filter'] == '/JPXDecode':
img = open(obj[1:] + ".jp2", "wb")
img.write(data)
img.close()
except:
print 'No images found for %s' % details_dict['posting_id']
body = ''
if attributes_bool:
for x in range(details_end+2, attribute_start):
body += text[x] + ' '
else:
for x in range(details_end+2, len(text)-1):
body += text[x] + ' '
attributes_dict = {}
if attributes_bool:
for x in range(attribute_start+2, len(text)-1):
try:
key = text[x].split(':')[0]
value = text[x].split(':')[1]
except:
pass
attributes_dict[key] = value
row = []
for x in details_dict:
if not x in headers:
headers.append(x)
row.append(details_dict[x])
if not 'body' in headers:
headers.append('body')
row.append(body)
row_list.append(row)
with open(filename, 'wb') as f:
csvwriter = csv.writer(f)
csvwriter.writerow(headers)
for x in row_list:
csvwriter.writerow(x)